正則表達式(含遞歸用法)


(原創)

正則表達式,日常用於匹配。
簡單小記一下:

一、基本

\   表示轉義
\xA9    \x 16進制
.     任意字符

a|b   a或b,注意,如果是 a|ab,去匹配 ab ,那么大多數引擎是匹配到 a,只有少數是匹配到ab     
[abc]    set內的或
[a-zA-Z0-9]   范圍的一種寫法
[^abc]    非set 
^   起始(匹配位置,而不是字符)
$   結束(匹配位置,而不是字符)

\b   word boundary 單詞位置, 這種位置左右邊有且僅有一邊是字符。

例如: \b.\b 匹配 abc def ghi 三個單詞中間的兩個空格

二、數量,懶惰,獨占

?     0-1 
??    lazy
?+    Possessive ,不回溯
        例如,abc?+c ,abcc 能行,abc 不行
*     0-無窮
*?  lazy 
*+    Possessive ,不回溯
+     1-無窮 
+?   lazy 
++   Possessive ,不回溯
       例如: abc++c  是不能匹配任何字符串的~
a{n}    n個a 
a{n,m}    范圍 n到m個

三、捕獲組 
(groupa)     括號括起來
捕獲組可以具有索引值,英文是 backreference,如
(abc|def)=\1 匹配 abc=abc 
原子組,不回溯:
a(?>bc|b)c 匹配abcc,但abc不行 


向前(右)向后(左):
a(?=b)   向前為
a(?!b)    向前非
(?<=a)b   向后為
(?<!a)b    向后非

索引(backreference)數字序列:從左到右,從外到內遞歸遞增,例如:
(str1)(str2(str3))(str4)
str1 索引1,str2(str3) 整體索引2 ,str3 索引3 ,str4 索引4

四、遞歸用法:

注意,不是所有語言都支持

例如: a\g<0>?b       \g<0> 代表遞歸匹配整個表達式,?還是代表0次或1次 
整個表達式可以匹配 ab ,aabb,aaabbb ......(k個a,k個b)  

 


免責聲明!

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



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