規定一些特殊語法表示字元類、數量限定符和位置關係,然後用這些特殊語法和普通字元一起表示乙個模式,這就是正規表示式(regular expression)。
egrep:grep -e,表示採用extended正規表示式語法。
fgrep:grep -f,表示只搜尋固定字串而不搜尋正規表示式模式,不會按正規表示式的語法解釋後面的引數。
正規表示式引數用單引號括起來了,因為正規表示式中用到的很多特殊字元在shell中也有特殊含義(例如\),只有用單引號括起來才能保證這些字元原封不動地傳給grep命令,而不會被shell解釋掉。
1.字元類
.匹配除換行符以外的任意乙個字元 如:abc. 結果為 abcd, abc9
[m-n]匹配中的乙個字元,減號-表示範圍。數字或字元都可以。
[^xy]匹配除x或y開頭的任一字元,如排除x1,y2
[[:***:]]預定義的 [[:alpha:]]匹配乙個字母,[[:digit:]]匹配乙個數字
\w
匹配字母或數字或下劃線或漢字 [ a-z0-9a-z_]
\s
匹配任意的空白符
\d
匹配數字 [0-9] \d不一定好使
2.數量限定符
x表示乙個或多個字元或者一種模式 也可以理解為重複前面的次數
x?x要匹配0或1次windows\d+
匹配windows後面跟1個或更多數字 單詞 數字 0或1次
x+x要匹配1或多次^\w+
匹配一行的第乙個單詞(或整個字串的第乙個單詞
x*x要匹配0或多次
xx要精確匹配n次
xx匹配m到n次
xx至少匹配m次
xx最多匹配n次
3.位置限定符
^x 以x開頭的行[
^x]
匹配除了x以外的任意字元
x$以x結尾的行
^$空行
\<x 以x開頭的單詞
x\>以x結尾的單詞
\bx或 x\b匹配x開頭或x結尾的位置 \bat\b匹配... at ...,但不匹配cat、atexit、battry
\bx或x\b匹配非x開頭和x結尾的位置 \bat\b匹配battery,但不匹配... attend、hat ...
\g
上乙個匹配的結尾(本次匹配開始)
\a
字串開頭(類似^
,但不受處理多行選項的影響)
\z
字串結尾或行尾(不受處理多行選項的影響)
\z
字串結尾(類似$
,但不受處理多行選項的影響)
例子:cat 1.txt
ati am at home
catattend
whatis this
thisatthis
>>grep '\bat\b' 1.txt
ati am at home
>>grep '\bat\b' 1.txt
whatis this
thisatthis
4.其他
\ 轉義 比如\.
() 作為乙個整體
| 或 abc[d|f] 匹配abcd, abcf
字元轉義
grep-e '^([0-9]\.)([0-9]\.)([0-9]\.)([0-9])$' 1.txt
192.168.0.111
^ 限制開頭是3位 ,以防找出1192.168.***這種字串
$ 限制末尾是3位, 以防找出***.168.***.1111這種字串
---------------
0
[0-9]-
[0-9]|0
[0-9]-
[0-9]
這個表示式能匹配兩種以連字型大小分隔的**號碼:一種是三位區號,8位本地號(如010-12345678),一種是4位區號,7位本地號(0376-2233445)。
\(0\d\)[- ]?\d|0\d[- ]?\d \d可換成
[0-9]
這個表示式匹配3位區號的**號碼,其中區號可以用小括號括起來,也可以不用,區號與本地號間可以用連字型大小或空格間隔,也可以沒有間隔。
假設 file.txt 內容如下:
leecode題目
987-123-4567
123 456 7890
(123) 456-7890
你的指令碼應當輸出下列有效的**號碼:
987-123-4567
(123) 456-7890
grep -e '^((\([0-9]\)\s)|([0-9]-))[0-9]-[0-9]$' file.txt
正規表示式 常用正規表示式
一 校驗數字的表示式 1 數字 0 9 2 n位的數字 d 3 至少n位的數字 d 4 m n位的數字 d 5 零和非零開頭的數字 0 1 9 0 9 6 非零開頭的最多帶兩位小數的數字 1 9 0 9 0 9 7 帶1 2位小數的正數或負數 d d 8 正數 負數 和小數 d d 9 有兩位小數的...
正規表示式 常用正規表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 4 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 或者 1 3...
正規表示式常用
正規表示式的介紹 1 資料型別 基本資料型別 number string boolean null undefined 複雜資料型別 array function object math date regexp正規表示式 string number boolean 2 regular express...