正規表示式 常用

2021-09-27 09:16:24 字數 2989 閱讀 7482

規定一些特殊語法表示字元類、數量限定符和位置關係,然後用這些特殊語法和普通字元一起表示乙個模式,這就是正規表示式(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...