注意: 正規表示式與檔案通配語法無關, 比如 *.xml大部分的字元(包括字母和數字字元)是普通字元。他們只能匹配它們自己。
cat 匹配 cat
有一些被稱為「元字元」的特殊字元, 可以匹配特殊規則
點 「.」
匹配任意字元
c.t 匹配: 以c開頭, 以t結尾, 中間是任意乙個字元
使用反斜槓「\」可以忽略元字元,使得元字元的功能與普通字元一樣。
c.t 匹配: c.t
c\t 匹配: c\t
在正規表示式的實現中, . 不能匹配換行符。字元類: 字元類是一組方括號內的字元, 表示可以匹配其中的任何乙個字元。
c[aeiou]t 表示匹配: cat or cet or cit or cot or cut
[0123456789] 表示匹配 任意乙個數字
[a] 匹配單個字元 a
字元類的範圍
在字符集中,你可以通過使用短橫線來表示匹配字母或數字的範圍。
[b-f] 與 [bcdef]相同
[a-z] 與[abcdefghijklmn….xyz] 相同
[1-9] 與 [123456789] 相同
字元類的反義
[^a] 匹配 任何不是「a」的字元
[^a-za-z0-9] 匹配 任何不是字母也不是數字的字元
[^\^] 匹配任何不是 「^」的字元
轉義字元類
\d 與 [0-9]相同(要匹配\d 用 \d)
\w 與 [0-9a-za-z_]相同
\s 匹配乙個空字元(空格, 製表符, 回車或者換行)
\d 與 [^0-9]相同, 表示匹配乙個非數字字元。
\w 與 [^0-9a-za-z]相同, 表示匹配乙個非數字同時不是字母的字元。
\s 表示匹配乙個非空字元。
重複在字元或字符集之後, 可以使用{}大括號來表示重複。
a 與 a 相同
a 匹配 aaa
a 匹配 空字串
a 匹配 a
指定重複次數範圍
colour 匹配 color 或者 colour
a 匹配 aaa 或者aaaa 或者 aaaaa
注意: 優先匹配最長字串, 比如輸入 i had an aaaaawful day會匹配單詞aaaaawful中的aaaaa,而不會匹配其中的aaa。
重複次數也可以是開區間:
a 表示匹配乙個或乙個以上的連續字元a
關於重複的轉義字元
? 與 相同
* 與 比如: .* 表示匹配任意內容
+ 與 相同, 比如 \w+ 表示匹配乙個詞
\?*+ 表示匹配字串 「?*+」
[?*+] 表示匹配乙個問號, 或者乙個星號, 或者乙個加號
非貪婪匹配
通過在句尾加上乙個問號, 可以使得字串重複不再匹配最長字元。
\d? 表示匹配\d\d\d\d或者\d\d\d\d\d。也就是和\d一樣
「.*?」 表示先匹配乙個雙引號,然後匹配最少的字元,然後是乙個雙引號,與上面兩個例子不同,這很有用。
選擇匹配
使用 | 分隔可以匹配不同的選擇:
cat|dog 表示匹配 「cat」 或者 「dog」
red|blue| 或者 red||blue 或者 |red|blue 表示匹配red或者blue或者乙個空字元
a|b|c 與[abc]相同
分組可以使用括號表示分組:
簡化正規表示式:
\w+\w+\w+\w+\w+ 以及 \w+\w+\w+\w+\w+\w+\w+\w+\w+\w+\w+
答案:
\w+(\w+\w+), \w+(\w+\w+)
單詞分隔符
單詞和非單詞之間有單詞分隔符。
\b 表示匹配乙個單詞分隔符
換行符^表示匹配行的開始位置
$表示匹配行的結束位置
^&表示乙個空行
正規表示式 正規表示式 總結
非負整數 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正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...