正規表示式(regular expression)是用乙個「字串」來描述乙個特徵,然後去
驗證另乙個「字串」是否符合這個特徵。
比如,表示式「ab+
」描述的特徵是乙個』a』和任意多個』b』,則』ab』,』abb』,』abbbbbbbbbb』都符合這個特徵。
表示式可用來:
(1)驗證字串是否符合指定特徵,如驗證是否是合法的郵件位址。
(2)用來
查詢字串,從乙個長的文字中查詢符合指定特徵的字串,比查詢固定字串更加靈活方便。
(3)用來
替換,比普通的替換更加強大。
1.普通字元
字母、數字、漢字、下劃線、沒有特殊定義的標點符號,都是「普通字元」。表示式中的普通字元,在匹配乙個字串時,匹配與之相同的乙個字元。
如:1.表示式「
c」,在匹配字串「
abcde
」時,匹配結果是:成功;匹配到的內容是「
c」;匹配到的位置是:開始於
2,結束於3。
注:下標從0
開始還是從
1開始,可能因當前的程式語言不同而不同。
2.表示式「bcd
」,在匹配字串「
abcde
」時,匹配結果是:成功;匹配到的內容是:「
bcd」;匹配到的位置是:開始於
1,結束於4。
2.簡單的轉義字元
一些不便書寫的字元,採用在前面加「\
」的方法。
表示式可匹配
\r,\n
代表enter
和換行符 \t
製表符代表「\
」本身
有特殊用處的標點符號,在前面加「\
」後,就代表該符號本身。比如:^,
$都有特殊意義,若要想匹配字串中「
^」和「
$」字元,則表示式就需寫成「
\^」和「
\$」。
表示式可匹配
匹配^符號本身
匹配$符號本身
匹配小數點(.)本身
這些轉義字元的匹配方法與「普通字元」類似。也是匹配與之相同的乙個字元。
3.能夠與『多種字元』匹配的表示式
可匹配『多種字元』其中的任意乙個字元。比如,表示式「\d
」可匹配任意乙個數字。雖可匹配其中任意字元,但只能是乙個,不是多個。
表示式可匹配\d
任意乙個數字,0~9
中的任意乙個 \w
任意乙個字母或數字或下劃線,也就是a~z,a~z
,0~9,_
中任意乙個 \s
包括空格、製表符、換頁符等空白字元的其中任意乙個
小數點可匹配除了換行符(\n)
以外的任意乙個字元
例:1.表示式「\d\d」,在匹配「abc123
」時,匹配的結果:成功;匹配到的內容:「
12」;匹配到的位置:開始於3
,結束於5。
2.表示式「a.\d」,在匹配「aaa100
」時,匹配的結果:成功;匹配到的內容:「
aa1」;匹配到的位置:開始於1
,結束於4。
4.自定義能夠匹配『多種字元』的表示式
使用方括號[ ]
包含一系列字元,能匹配其中任意乙個字元。用
[^]包含一系列字元,則能匹配其中字元之外的任意乙個字元。注意:可以匹配其中任意乙個,但只能是乙個,不是多個。
表示式可匹配[ab5@]
匹配「a
」或「b
」或「5
」或「@」
[^abc]
匹配「a
」,「b
」,「c
」之外的任意乙個字元
[f-k]
匹配「f」~
「k」之間的任意乙個字母
[^a-f0~3]
匹配「a」~
「f」,「0」~
「3」之外的任意乙個字元
例:1.表示式「
[bcd][bcd]
」匹配「
abc123
」時,匹配的結果:成功;匹配到的內容:「
bc」;匹配到的位置:開始於1
,結束於3。
2.表示式「[^abc]
」匹配「
abc123
」時,匹配的結果:成功;匹配到的內容:「
1」;匹配到的位置:開始於3
,結束於4。
5.修飾匹配次數的特殊符號
想要使用表示式再加上修飾匹配次數的特殊符號,則用重複書寫表示式就可重複匹配。
方法:「次數修飾」放在「被修飾的表示式」後邊。
比如:「[bcd][bcd]
」可寫成「
[bcd]」
表示式作用
表示式重複n
次,如:「
\w」相當於「
\w\w
」;「a
」相當於「
aaaaa」
表示式至少重複m
次,最多重複
n次,如:「
ba」可匹配「
ba」或「
baa」或「
baaa」
表示式至少重複m
次,如:「
\w\d
」可匹配「
a12」,「
_456
」,「m12344」…
匹配表示式0次或1
次,相當於
,如:「
a[cd]?
」可匹配「
a」,「
ac」,「ad」
表示式至少出現1
次,相當於
,如:「
a+b」可匹配,「
ab」,「
aab」,「
aaab」…
表示式不出現或出現任意次,相當於
,如:「
\^*b
」可匹配「
b」,「
^^^b」…
例:1.表示式「\d+\.?\d*
」在匹配「
it costs $12.5
」時,匹配的結果是:成功;匹配到的內容是:「
12.5
」;匹配到的位置是:開始於10
,結束於14。
2.表示式「gogle
」在匹配「
ads by goooooogle
」時,匹配的結果是:成功;匹配到的內容是:「
goooooogle
」;匹配到的位置是:開始於7
,結束於17。
6.其他一些代表抽象意義的特殊符號
表示式作用 ^
與字串開始的地方匹配,不匹配任何字元
$與字串結束的地方匹配,不匹配任何字元
\b匹配乙個單詞邊界,也就是單詞和空格之間的位置,不匹配任何字元
例:1.表示式「^aaa
」在匹配「
*** aaa ***
」時,匹配的結果是:失敗;因為「
^」要求與字串開始的地方匹配,因此,只有當「
aaa」位於字串的開頭時,「
^aaa
」才能匹配,比如:「
aaa *** ***」。
2.2.表示式「
aaa$
」在匹配「
*** aaa ***
」時,匹配的結果是:失敗;因為「
$」要求與字串開始的地方匹配,因此,只有當「
aaa」位於字串的結尾時,「
aaa$
」才能匹配,比如:「
*** *** aaa」。
3.表示式「.\b.
」在匹配「
@@@abc
」時,匹配的結果是:成功;匹配到的內容是:「
@a」;匹配到的位置是:開始於2
,結束於4。
進一步說明:「\b
」與「^
」和「$
」類似,本身不匹配任何字元,但它要求在匹配結果中所處位置的左右
2邊,其中一邊是「
\w」範圍,另一邊是非「
\w」的範圍。
4.表示式「\bend\b
」在匹配「
weekend,endfor,end
」時,匹配的結果是:成功;匹配到的內容是:「
end」;匹配到的位置是:開始於15
,結束於18。
一些符號可影響表示式內部的子表示式之間的關係。
表示式作用
左右兩邊表示式之間「或」關係,匹配左邊或右邊
(1)在被修飾匹配次數的時候,括號中的表示式可作為整體被修飾
(2)取匹配結果的時候,括號中的表示式匹配到的內容可被單獨得到
例:1.表示式「
tom|jack
」在匹配字串「
i』m tom,
he is jack
」時,匹配的結果是:成功;匹配到的內容是:「tom
」;匹配到的位置是:開始於4
,結束於
7。匹配下乙個時,匹配的結果是:成功;匹配到的內容是:「jack」;匹配到的位置是:開始於15
,結束於19。
2.表示式「(go\s*)+
」在匹配「
let』s go go go!」時,匹配的結果是:成功;匹配到的內容是:「go go go
」;匹配到的位置是:開始於6
,結束於14。
3.表示式「¥
(\d+\.?\d*)
」在匹配「
$10.9
,¥20.5
」時,匹配的結果是:成功;匹配到的內容是:「¥20.5」;匹配到的位置是:開始於6
,結束於
10。單獨獲取括號範圍匹配到的內容是:「
20.5」。
正規表示式 正規表示式 總結
非負整數 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正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...