正则表达式普遍风格(原创)
正则表达式普遍的风格如下,不同语⾔或者包的具体实现可能不同。
正则化标准化⼀、基本标识符
\ 表⽰转义
\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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。