正则表达式学习 3 选择、分组和后向引用

选择可以在两种或者更多的模式中选择一个
如 (The|the|THE) 匹配 THE RIME OF THE ANCYENT MARINERE, IN SEVEN PARTS.
也可以使用 (?i)the 达到相同效果(不区分大小写)。
 
正则表达式中的选项
(?d) Unix中的行
(?i) 不区分大小写
(?J) 允许重复的名字
(?m) 多行
(?s) 单行(dotall)
(?u) Unicode
(?U) 默认匹配最短
(?x) 忽略空格和注释
(?-...) 复原或关闭选项
 
子模式(t|T)h(e|eir) 匹配the The their Their
子模式括号不是必须的
使用字符组的子模式\b[tT]h[ceinry]*\b 可以匹配thee thence之类的
 
使用\1 或$1可以后向引用之前用圆括号捕获的内容 (\d)\d\1 可以匹配101
 
也可以给分组命名,这样引用的时候就可以用名字而不是数字了
如 用(?<one>it is)命名 用$+{one} 引用
命名分组的语法
(?<name>...) 命名分组
(?name...) 另一种命名分组的方式
(?P<name>...)    Python中命名分组
\k<name>       Perl中引用
\k'name'          Perl中引用
\g{name}        Perl中引用
\k{name}        .Net中引用
(?P=name)      Python中引用
 
不想引用分组的时候可以使用非捕获分组,由于不在内存中存储所以性能较高
比如(the|The|THE)就是
也可以这么写(?i)(?:the)
也可以这样(?:(?i)the)
更推荐这样(?i:the)
 
另一种非捕获分组是原子分组,如果用正则表达式引擎进行回溯,这种分组就可以将回溯操作关闭,它只针对原子分组内的部分,而不针对整个正则表达式
如(?>the)
原子分组主要与性能有关,书上没有过多介绍
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值