通配符和正則表達式
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:錨定詞首,其后面的任意字符必須作為單詞首部出現
\>或\b:錨定詞尾,其前面的任意字符必須作為單詞尾部出現
\B:非單詞的開頭或結尾
^$:空白行
分組匹配用() :
(ac)* :匹配ac這個分組出現任意次
\1:引用第一個左括號以及與之對應的右括號所包括的所有內容,同理還有\2,\3