通配符和正则表达式
2017-09-30-11:22:31个人原创,允许转载,请注明出处,作者,否则追究法律责任。
通配符适用的地方:shell命令行或者shell脚本中
正则表达式适用的地方:字符串处理时,一般有一般正则和Perl正则。
1,通配符
﹡ 匹配所有:匹配0个到多个的任意的字符。
?匹配任意单个字符
[ ] 匹配括号内的1个字符
[ ! ] 匹配 不在中括号内的一个字符 (和正则中的 [ ^ ]作用相似,都是反向选择)
当要把以上的* ,?,[ ]当成参数或者字符串处理时,就要限制shell不能当成通配符。这时的处理方法是:加单引号或者用(反斜杠转义)
2,正则表达式
字符 |
作用 |
* |
前一个字符匹配0次或任意多次 |
. |
匹配除了换行符以外任意一个字符 |
^ |
匹配行首。例如:^helloworld会匹配以helloworld开头的行 |
$ |
匹配行尾。例如:helloworld$会匹配以helloworld结尾的行 |
[ ] |
匹配中括号里的任意指定的一个字符,但只匹配一个字符 |
[^] |
匹配除中括号以外的任意一个字符 |
|
转义符,取消特殊含义 |
{n} |
表示其前面的字符恰好出现n次 |
{n,} |
表示其前面的字符出现不小于n次 |
{n,m} |
表示其前面的字符至少出现n次,最多出现m次 |
字符匹配
.:匹配任意单个字符
*:匹配其前面一个字符出现任意次
?:匹配其前面的字符1次或0次
+:匹配其前面一个字符出现至少一次(在扩展正则表达式中)
位置匹配
^:锚定行首
$:锚定行尾
<或:锚定词首,其后面的任意字符必须作为单词首部出现
>或:锚定词尾,其前面的任意字符必须作为单词尾部出现
B:非单词的开头或结尾
^$:空白行
分组匹配用() :
(ac)* :匹配ac这个分组出现任意次
1:引用第一个左括号以及与之对应的右括号所包括的所有内容,同理还有2,3