正規表示式: 用來描述符合某種模式(具有某種特徵)的一類字串的表示式.
正規表示式的組成
元字元主要有以下幾類
1.特殊字元(不顯示的字元)
元字元含義
\a警報
\b退格, 單詞邊界
\eesc字元
\f進紙符
\n換行符
\r回車符
\t水平製表符
\v垂直製表符
2.不確定範圍的字元組
所謂字元組,就是包含一組特定字元,但只從中選乙個.字元我的理解是: 在
中指定乙個範圍, 從中任意匹配乙個
含義[abc]
匹配乙個a,b ,c中的任意乙個字元
[a-z]
匹配乙個從a到z中的任意乙個字元
[^abc]
匹配乙個非a,b,c中的任意乙個字元
[^a-z]
匹配乙個不在a到z之中的字元
[[a-z]-[abc]]
字元組減法
[[a-z] && [ ^abc]]
字元組集合運算
注意,3.確定範圍字元組普通字元組
內其他部分元字元 不起作用,如
[.]
並不會匹配任意乙個字元,而是匹配符號.
普通字元組
內的
\d
,\w
還是可以使用的普通字元組內要匹配
-
,必須寫在最前面,如[-abc]
範圍明確,不需要你指定的字元組, 返回乙個滿足條件的字元符號含義.
匹配任意字元
\d匹配乙個數字
\d匹配乙個非數字
\w匹配乙個單詞字元, 即乙個數字或字母
\w匹配乙個非單詞字元
\s匹配乙個空白字元
\s匹配乙個非空白字元
4.限定(數量)字元
不匹配任意乙個字元,放在匹配表示式後面,用來描述前面表示式的數量字元
含義舉例
例子解釋
*匹配前面的子表示式零次或多次,即
a*a出現0次或多次
+匹配前面的子表示式一次或多次
a+a至少出現一次
?匹配前面的子表示式零次或一次
a?a出現一次或者不出現
匹配確定的 n 次
aa必須出現5次
至少匹配 n 次
aa至少出現99次
最少匹配 n 次且最多匹配 m 次
aa出現5到10次
5.位置元字元
字元含義
^匹配 行/字串 開始的位置
\a匹配文字起始位置,即第一行開頭
$匹配 行/字串 的結尾
\z匹配文字結束位置
\b單詞邊界
\b非單詞邊界
\g上一次匹配結束的位置
(?=指定內容
)
肯定順序環視,匹配指定內容前面的位置
(?!指定內容
)
否定順序環視, 匹配非指定內容前面的位置
(?<=指定內容
)
肯定逆序環視, 匹配指定內容後面的位置
(?否定逆序環視,匹配非指定內容後面的位置
(?<=指定內容1
)(?=指定內容2
)
匹配指定內容1
之後,指定內容2
之前的位置
把 1234567變成"1,234,567",可以用"(?<=\d)(?=(\d\d\d)+(?!\d)) "來尋找,
的位置.
符號
含義(指定內容
)
捕獲括號,指定內容匹配成功後,內容被括號捕獲,可以引用
\1,\2, …,\n
引用, 指定捕獲的組號來引用內容, 組號從1開始
(?:指定內容
)
非捕獲括號, 即使指定內容**獲, 內容也不參與捕獲
(?p<指定名字
>指定內容
)
給分組命名,引用時用()
(?>指定內容
)
固化分組, 簡單來講一直匹配直到不符合條件,且不歸還內容
(指定內容1
指定內容2
對於捕獲和引用, 如在串"12345678900"中,貪婪模式和非貪婪模式搜尋: (\d)(\d) 替換為: 111\2 ,其中\2為組號 ,結果為"1112345678900"
貪婪模式,就是在整個表示式匹配成功的前提下,盡可能多的匹配
非貪婪模式,就是在整個表示式匹配成功的前提下,盡可能少的匹配.
如在』『bbb>』'中匹配"<\w*>"預設匹配為貪婪匹配, 直接使用貪婪匹配得到: 『『bbb>』』; 非貪婪匹配得到: 『』"
*
,+
等符號
非貪婪匹配加"?": 如+?
,*?
在"abbb"中匹配"ab+", 為貪婪匹配, 得"abbb".注釋和模式修飾詞在"abbb"中匹配"ab+?", 為非貪婪匹配, 得"ab".
表示含義
(?i:指定內容
)
匹配指定內容,不區分大小寫
(?x:指定內容
)
寬鬆排列和注釋模式
(?s:指定內容
)
點號通配模式
(?m:指定內容
)
增強的行錨點模式
(?#指定內容
)
注釋↩︎
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 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 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...