正規表示式是由普通字元(例如字元 a 到 z)以及特殊字元(稱為"元字元")構成的文字序列,可以是單個的字元、字元集合、字元範圍、字元間的選擇或者所有這些元件的任意組合。
下面的**中列舉了構成正規表示式的一些語法規則及其含義。
1) 字元
語法說明
表示式示例
匹配結果
一般字元
匹配自身
abcabc
.匹配任意除換行符"\n"外的字元, 在 dotall 模式中也能匹配換行符
a.cabc
\轉義字元,使後乙個字元改變原來的意思;
如果字串中有字元 * 需要匹配,可以使用 \* 或者字符集[*]。
a\.c
a\\c
a.ca\c
[...]
字符集(字元類),對應的位置可以是字符集中任意字元。
字符集中的字元可以逐個列出,也可以給出範圍,如 [abc] 或 [a-c],
第乙個字元如果是 ^ 則表示取反,如 [^abc] 表示除了abc之外的其他字元。
a[bcd]e
abe 或 ace 或 ade
\d數字:[0-9]
a\dc
a1c\d
非數字:[^\d]
a\dc
abc\s
空白字元:[《空格》\t\r\n\f\v]
a\sc
a c\s
非空白字元:[^\s]
a\sc
abc\w
單詞字元:[a-za-z0-9]
a\wc
abc\w
非單詞字元:[^\w]
a\wc
a c2) 數量詞(用在字元或 (...) 之後)
語法說明
表示式示例
匹配結果
*匹配前乙個字元 0 或無限次
abc*
ab 或 abccc
+匹配前乙個字元 1 次或無限次
abc+
abc 或 abccc
?匹配前乙個字元 0 次或 1 次
abc?
ab 或 abc
匹配前乙個字元 m 次
abcabbc
匹配前乙個字元 m 至 n 次,m 和 n 可以省略,若省略 m,則匹配 0 至 n 次;
若省略 n,則匹配 m 至無限次
abcabc 或 abbc
3) 邊界匹配
語法說明
表示式示例
匹配結果
^匹配字串開頭,在多行模式中匹配每一行的開頭
^abc
abc$
匹配字串末尾,在多行模式中匹配每一行的末尾
abc$
abc\a
僅匹配字串開頭
\aabc
abc\z
僅匹配字串末尾
abc\z
abc\b
匹配 \w 和 \w 之間
a\b!bc
a!bc
\b[^\b]
a\bbc
abc4) 邏輯、分組
語法說明
表示式示例
匹配結果
|| 代表左右表示式任意匹配乙個,優先匹配左邊的表示式
abc|def
abc 或 def
(...)
括起來的表示式將作為分組,分組將作為乙個整體,可以後接數量詞
(abc)
abcabc
(?p...)
分組,功能與 (...) 相同,但會指定乙個額外的別名
(?pabc)
abcabc
\引用編號為 的分組匹配到的字串
(\d)abc\1
1abe1 或 5abc5
(?p=name)
引用別名為 的分組匹配到的字串
(?p\d)abc(?p=id)
1abe1 或 5abc5
5) 特殊構造(不作為分組)
語法說明
表示式示例
匹配結果
(?:...)
(…) 的不分組版本,用於使用 "|" 或後接數量詞
(?:abc)
abcabc
(?ilmsux)
ilmsux 中的每個字元代表一種匹配模式,只能用在正規表示式的開頭,可選多個
(?i)abc
abc(?#...)
# 後的內容將作為注釋被忽略。
abc(?#comment)123
abc123
(?=...)
之後的字串內容需要匹配表示式才能成功匹配
a(?=\d)
後面是數字的 a
(?!...)
之後的字串內容需要不匹配表示式才能成功匹配
a(?!\d)
後面不是數字的 a
(?<=...)
之前的字串內容需要匹配表示式才能成功匹配
(?<=\d)a
前面是數字的a
(?之前的字串內容需要不匹配表示式才能成功匹配
(?前面不是數字的a
正規表示式 正規表示式 總結
非負整數 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正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...