正則表達式


1.正則表達式:記錄文本的規則的代碼

\b:元字符,單詞分界處,匹配一個位置

.:元字符,匹配出了除了換行符以外的任意字符

*:元字符,指定*前邊的內容可以連續重復以使整個表達式得到匹配

\d:元字符,匹配一位數字

\s:匹配任意的空白字符,如空格,制表符,換行符,中文全角空格

\w:匹配字母,數字,下划線,漢字

\d+:匹配一個或多個連續的數字,匹配重復一次或多次

^:匹配字符串的開始

&:匹配字符串的結束

?:重復0次或者一次

{n}:重復n次

{n,}:重復n或者更多次

{n,m}:重復n到m次

 

2.字符類

[a,e,i,o,u] [.?!] [0-9]

 

3.分支條件

“|”:從左到右,順序

 

4.分組

用小括號來指定表達式(分組),再用大括號指定重復次數

 

5.反義

\W:匹配任意不是字母,數字,下划線,漢字的字符

\S:匹配任意不是空白符的字符

\D:匹配任意非數字的字符

\B:匹配不是單詞開頭或者結束的位置

[^x]:匹配除了x以外的任意字符

 

6.使用小括號的特定用途

捕獲:(exp)匹配exp,並捕獲文本到自動命名的組里

(?<name>exp) 匹配exp,並捕獲文本到名稱為name的組里,同(?'name'exp)

(?:exp) 匹配exp,不捕獲匹配的文本,也不給此分組分配組號

零寬斷言:(?=exp) 匹配exp前面的位置

(?<=exp) 匹配exp后面的位置

(?!exp) 匹配后面跟的不是exp的位置

(?<!exp) 匹配前面不是exp的位置

注釋:(?#comment)

 

7.貪婪與懶惰

一般情況匹配盡可能多的字符:a. *b 貪婪

懶惰:a.*?b

*?:重復任意次,單盡可能少重復

??:重復0次或者1次,但盡可能少重復

{n,m}?:重復n~m次,但盡可能少重復

 

8.處理選項

IgnoreCase:忽略大小寫

Multiline:多行模式

Singleline:單行模式

 IgnorePatternWhiteSpace:忽略空白

Explicitcapture:顯示捕獲

平衡組,遞歸匹配:

(?'group'):把捕獲的內容命名為group,並壓入堆棧stack

(?'-group'):從堆棧中彈出最后壓入堆棧的名為group的捕獲內容,若堆棧本來為空,則本分組的匹配失敗

(?(group)yes|no):若堆棧上存在以名為group的捕獲內容的話,繼續匹配yes部分表達式,否則匹配no部分

(?!):零寬負相先行斷言,無后綴表達式,故匹配總是失敗

\cN:ASII控制字符,比如\cC代表ctrl+C

\A:字符串開頭,類似^,但不受多行選項的影響

\Z:字符串結尾或行尾,不受多行選項影響

\G:當前搜索的開頭

\P{name}:Unicode中命名為name的字符類

(?>exp):貪婪表達式

(?<x>-<y>exp):平衡組

(?im-nsx:exp):在字表達式exp中改變處理選項

(?im-nsx)為表達式后面的部分改變處理選項

(?(exp)ye|no):零寬正向先行斷言,能匹配yes,不能,no表達式

(?(name)yes|no):命名為name的組捕獲到了內容,則為yes,否則no

郵件:\w+([-+.']\w+)*@\w+([-.]\w)*\.\w+([-.]\w+)*


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM