glob模式

这几天打算仔细看下redis命令,到keys * 时,猜测应该使用的是 glob 模式匹配,就详细找了点资料,总结如下:
			1.标准glob 模式:
				*
				?
				[abc]
				[a-z]


			2.类unix系统,[]还可以使用 '!' - 排除
				[!abc]
				[!a-z]


			3.在shell中,'!' 表示 'history' 命令的替代。所以,[!abc],可以使用 [^abc] 来替代!!


			4.类unix下的一些shell(c shell 和 bash)支持额外的解析,称作:'alternation' 或 'brace expansion' - 花括号扩展({})
				1.生成一个集合:
						echo a{p,c,d,b}e 		// ape ace ade abe
					但是,不应该在shell脚本中使用,shell将本中,会原样输出:
						echo a{p,c,d,b}e 		// a{p,c,d,b}e
				2.当 {} 同 通配符结合使用,先解析 {},再正常解析通配符。因此:
					ls *.{jpg,jpeg,png}			// 被解析为:ls *.jpg *.jpeg *.png
					echo *.{png,jp{e,}g} - {}可以嵌套使用		// 被解析为:*.jpg *.jpeg *.png
				3.{} 还可以用于按次序排列的区间,2个整型或字符之间,以 '..' 分割
					echo {1..10}
					echo file{1..4}.txt
					// - //
						新版本的bash允许第3个整型,表示步长
						echo {1..10..3}		// 输出:1 4 7 10
					// - //
				4.当 {} 结合变量(variable)一起使用,可能必须结合内建的 'eval' 一起使用。
					start = 1; end = 10
					echo {$start..$end}		// 输出 {1..10}
					eval echo {$start..$end}	// 输出 1 2 3 4 5 6 7 8 9 10


			5.windows下的cmd.exe
				不支持 [...]	


			6.SQL:
				标准sql语句的like操作符,支持 ? 和 *,但不支持 []
				? == _
				* == %
				glob术语一般不在SQL社区中使用。很多SQL的实现,扩展了like操作符,支持更多的模式匹配


			参考文章:
				https://en.wikipedia.org/wiki/Glob_(programming)
				https://en.wikipedia.org/wiki/Bash_(Unix_shell)#Brace_expansion
				https://en.wikipedia.org/wiki/Wildcard_character

			redis的glob模式支持:
				?
				*
				[]
				[^]
			redis的模式匹配,支持的有点少,stackoverflow上有一篇文章,结合 'lua脚本' ,可匹配更多(我们用php应该也可以)
				http://stackoverflow.com/questions/29942541/how-to-get-keys-which-does-not-match-a-particular-pattern-in-redis


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值