正規表示式

2021-07-31 13:01:35 字數 2081 閱讀 9338

注意: 正規表示式與檔案通配語法無關, 比如 *.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正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...