通配符与正则表达式很容易混淆,首先要明白二者是不同的。通配符用于Linux的shell命令(如文件名相关操作)中,而正则表达式用于文本内容中的字符串搜索和替换等。通配符是Linux系统本身就支持的,而正则表达式用于vim编辑器或awk程序。
几个典型区别:
通配符 *:匹配0个字符或多个字符。
正则表达式:
*:匹配该字符的前一个字符的0次或多次出现。
正则表达式是大小写敏感的。
要想匹配行首的字符要使用抑扬字符(^),当抑扬字符(^)出现在方括号中时,它表示“排除”。
.点
|
匹配除“rn”之外的任何单个字符。要匹配包括“rn”在内的任何字符,请使用像“[sS]”的模式。
|
?
匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。
|
*
匹配前面的子表达式任意次。例如,zo*能匹配“z”,“zo”以及“zoo”。*等价于{0,}。
|
(pattern) |
匹配pattern并捕获该匹配的子表达式。可以使用$0…$9属性从结果“匹配”集合中检索捕获的匹配。若要匹配括号字符 ( ),请使用“(”或者“)”。 |
(?:pattern)
匹配pattern但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用“or”字符 (|) 组合模式部件的情况很有用。例如,'industr(?:y|ies) 是比 'industry|industries' 更经济的表达式。 |
x|y
匹配x或y。例如,'z|food' 匹配“z”或“food”。'(z|f)ood' 匹配“zood”或“food”。 |
[xyz]
字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
|
[^xyz]
|
负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“plin”。
|
参考:
http://baike.baidu.com/link?url=WEH-vBcoiAqWXGycIf4Vwp9Hm5WEx9TLqVCNrhCSk6Zfo2hN1MrNjG588auPrLRsq9bDeX9EHYAVrMW8jS2sk_ (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|