正規表示式是一種可以用於模式匹配和替換的規範,一個正規表示式就是由普通的字元(如字元 a~z)以及特殊字元(元字元)組成的文字模式,它用以描述在查詢文字主體時待匹配的一個或多個字串。
正規表示式作為一個模板,將某個字元模式與所搜尋的字串進行匹配。本文簡單了解一下如何使用正規表示式來操作字串。
元字元
正規表示式中含有一些具有特殊意義的字元,這些特殊字元稱為
正規表示式的元字元。例如“d”表示 0~9 的任何一個數位,“d”就是元字元。正規表示式中有多種元字元,常用的元字元如表 1 所示。
表1 正規表示式常用的元字元
元字元 |
正規表示式的寫法 |
說明 |
. |
"." |
代表任意一個字元 |
d |
"d" |
代表 0~9 的任何一個數位 |
D |
"D" |
代表任何一個非數位字元 |
s |
"s" |
代表空白字元,如“t”和”n” |
S |
"S" |
代表非空白字元 |
W |
"W" |
代表不可用於識別符號的字元 |
p {Lower} |
p {Lower} |
代表小寫字母 {a~z} |
p {Upper} |
p {Upper} |
代表大寫字母 {A~Z} |
p {ASCII} |
p {ASCII} |
ASCII 字元 |
p {Alpha} |
p {Alpha} |
字母字元 |
p {Digit} |
p {Digit} |
十進位制數位,即 [0~9] |
p {Alnum} |
p {Alnum} |
數位或字母字元 |
p {Punct} |
p {Punct} |
標點符號:!"#$%&'()*+,-./:;<=>[email protected][]^_`{|}~ |
p {Graph} |
p {Graph} |
可見字元:[p{Alnum}p{Punct}] |
p {Print} |
p {Print} |
可列印字元:[p{Graph}x20] |
p {Blank} |
p {Blank} |
空格或製表符:[t] |
p {Cntrl} |
p {Cntrl} |
控制字元:[x00-x1Fx7F] |
在正規表示式中,可以使用方括號括起來若干個字元來表示一個元字元。這個元字元可以代表方括號中的任何一個字元,例如字串“reg="a4"” “reg="b4"”和“reg="c4"”都是與“reg="[abc]4"”匹配的字串。
注意:在正規表示式中,“.”代表任何一個字元,因此如果想在正規表示式中使用普通意義的點字元,那麼必須使用跳脫字元。
限定符
正規表示式中允許使用限定修飾符來限定元字元出現的次數,例如,“B*”表示 B 字母可以在字串中出現零次或多次。
正規表示式中可以使用多種限定符,如表 2 所示。
表2 正規表示式常用的限定符
限定符 |
? |
* |
+ |
{n} |
{n,} |
{n,m} |
說明 |
零次或一次 |
零次或多次 |
一次或多次 |
正好出現 n 次 |
至少出現 n 次 |
出現 n~m 次 |