日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

正则表达式及测试工具

發布時間:2023/12/2 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正则表达式及测试工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 正則表達式

  正則表達式:一種匹配文本中的字符序列的字符模式。在很多文本編輯器或其他工具里,正則表達式通常被用來檢索或替換那些符合某種模式的文本內容。許多程序設計語言都支持利用正則表達式進行字符串操作。

  一個正則表達式就是由普通字符(例如字符 ‘a’ 到 ‘z’)以及特殊字符(稱為元字符)組成的文字模式。該模式描述在查找文字主體時待匹配的一個或多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。

1.1 元字符

字符

描述

實例

\d

匹配任意的數字

\d\d可以匹配12,但不匹配a1或1a等

\D

匹配任意的非數字字符

\D\D匹配a@,不匹配12

\w

匹配單詞字符(包括字母、數字、下劃線和漢字)

?

\W

匹配任意的非單詞字符(包括字母、數字、下劃線和漢字)

\W匹配@等,不匹配a

\s

匹配任何空白字符,包括空格、制表符、換行符等

?

\S

匹配任意非空白字符

?

.

匹配除換行符之外的任意字符

?

^

匹配行的開始位置

"^The":表示所有以"The"開始的字符串("There","The cat"等)

$

匹配行的結束位置

"of despair$":表示以"of despair"結尾的字符串

\b

匹配單詞的開始或結束位置

"\bcat"將匹配 "cat cat cat"首尾的"cat",中間的"cat"不會被匹配上

\B

\b的補集

"\bcat"將匹配 "cat cat cat"中間的"cat"

2. 字符類

  ??在正則表達式中,元字符通常一次只能匹配一個位置或字符集合中的一個字符,但是如果要匹配的字符集合沒有與之相對應的元字符時,則需要自定義匹配的字符集合。此時可以使用字符類解決這個問題。字符類是一個字符集合,如果該字符集合中的任何一個字符被匹配,則它就會找到該匹配項。

?   字符類是正則表達式中的“迷你”語言,可以在方括號" []"中定義。例如: [012345]匹配數字0,1,2,3,4,5中的任何一個。[Jj]ack匹配字符串“Jack”或者“jack”。

?   然而,正則表達式[0123456789]的書寫非常不方便。因此,正則表達式引入連接符“-”定義字符的范圍。例如:正則表達式[0-9]等價于正則表達式[0123456789]。

3. 限定符

  正則表達式的元字符一次只能匹配一個位置或一個字符,如果要匹配零個、一個或多個字符時,則需要使用限定符。限定符用于指定允許特定字符或字符集自身重復出現的次數。常用限定符的說明如表2.11所示。

字符

描述

實例

{n}

重復n次

'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 。

{n,}

至少重復n次

'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價于 'o+'。'o{0,}' 則等價于 'o*'。

{n,m}

重復至少n次,最多m次

"o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價于 'o?'。

+

重復至少1次,等同{1,}

'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價于 {1,}。

*

重復至少0次,等同{0,}

zo* 能匹配 "z" 以及 "zoo"。 * 等價于{0,}。

?

當該字符緊跟在任何一個其他限定符 (*, +, ?, {n}, {n,}, {n,m}) 后面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認的貪婪模式則盡可能多的匹配所搜索的字符串。

對于字符串"oooo",'o+?' 將匹配單個 "o",而 'o+' 將匹配所有 'o'。


4. 轉義字符

正則表達式定義了一些特殊的元字符,如^、$、.等。由于這些字符在正則表達式中被解釋成其他的特定的意義,如果需要匹配這些字符,則需要使用轉義字符來解決這一問題。轉義字符為“\”(反斜杠),它可以取消這些字符(如^、$、.等)在表達式中具有的特殊意義,轉義字符說明及實例如表2.12。

字符

描述

實例

\

有些字符被用來表示特殊的含義,但是要匹配其本身時就需要用轉義字符。

"\\"匹配"\"

"\."匹配"."

"\*"匹配"*"

"\+"匹配"+"

"\unnnn"匹配一個4位16進制數指定的Unicode


5. 分組、“或”、以及反向引用

??  前面講到怎么重復單個字符(直接在字符后面加上限定符就行了);但如果想要重復一個字符串就應該使用分組。

?   分組又稱為子表達式,即把一個正則表達式的全部或部分分成一個或多個組。其中,分組使用括號“()”表示。分組之后,可以將括號“()”之中的表達式看成一個整體來處理,然后再指定這個子表達式的重復次數。例如:“(\d{1,3}\.){3}\d{1,3}”是一個簡單的IP地址匹配表達式。 “(\d{1,3}\.){3}”匹配三位數字加上一個英文句號重復3次,“\d{1,3}”匹配1到3位的數字。

?  ??“或”使用字符“|”來表示。如果某一個字符串匹配了正則表達式中的字符“|”的左邊或者右邊的規則,那么該字符串也匹配了該正則表達式。例如:“0\d{2}-\d{8}|0\d{3}-\d{7}|0\d{3}-\d{8}”匹配當前國內部分地區的3種固定電話號碼:一種是號碼的前3位為區號,后8位為本地號碼;另一種是號碼的前四位為區號,后7位為本地號碼;最后一種是號碼的前4位為區號,后8位為本地號碼。其中,區號和本地號碼都使用連接符號“-”進行連接。

?   反向引用:當一個正則表達式被分組之后,每一個組將自動被賦予一個組號,該組號可以代表該組的表達式。其中,組號的編制規則為:從左到右,以分組的左括號“(”為標志,第一個分組組號為1,第二個分組的組號為2,以此類推。反向引用提供了查找重復字符組的方便方法。它可被認為是再次匹配同一個字符串的快捷指令。反向引用可以使用數字命名的組號,語法為:\number,也可以使用指定命名的組號,語法為:\k<name>。例如:表達式“('|")(.*?)(\1)”在匹配“'Hello',"World"”時,首先匹配到的內容是:“'Hello'”。再次匹配下一個時,可以匹配到“"World"”。

2. RegEX Tester用來測試正則表達式

regEX Tester是一個簡單的用來測試正則表達式的工具,是開源的。

轉載于:https://www.cnblogs.com/wangshide/archive/2012/03/17/2404059.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的正则表达式及测试工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。