正则表达式(含递归用法)

(原创,谢绝转载)

正则表达式,日常用于匹配。
简单小记一下:

一、基本

\ 转义
\xA9 16进制数字符
. 任意字符
a|ab 或,注意,如果是ab的话,大多数引擎是匹配到 a,只有少数是匹配到ab 
[abc] 也是或
[a-zA-Z0-9] 范围的一种写法
[^] 反向set 
^ 起始
$ 结束

谈一下 \b,这个是匹配位置,这种位置左右边有且仅有一边是字符。
例如: \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} 范围 

三、捕获组 
(groupa)
具有索引值
(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)

猜你喜欢

转载自www.cnblogs.com/randomstring/p/10426447.html