[Regular] 2、正则表达式基础元字符及分组、捕获

      分组、捕获、分组不捕获
      普通的无特殊意义的括号通常有两种功能:分组和捕获。
      捕获型括号的编号是按照括号出现的次序,从左到右计算的。如果提供反向引用,可以在表达式的后面用\1,\2来引用匹配的文本。如:(a)(b)可以用\1引用(a),\2引用(b).

2009060322384076.jpg


仅用于分组的括号(?:…)
仅用于分组的括号(?:…) 不能用来提取文本,只能用来规定多选结构或者量词的作用对象。如 (1|one)(?:and|or)(2|two) 匹配之后,\1包含“1”或者“one”,\2q包含“2”或者“two”。只用于分组的括号也叫非捕获型括号.


命名捕获 (?<Name>)
.Net引擎能够能捕获内容命名。如果在正则表达式内部引用捕获的文,.Net中使用\k<Name>. 如 (?<Name>a)[a-z]+\k<Name> 来匹配abeena.

固化分组 (?>…)
如 果了解了正则引擎的匹配原理,就很容易理解固化分组。固化分组一旦括号内的子表达式匹配之后,匹配的内容就固定下来,在接下来的匹配过程中不会变化,除非 整个固化分组的括号都被弃用,在外部回溯中重新应用。固化分组能够提高匹配效率,而且自己能对什么能匹配,什么不能匹配进行准确地控制。 


匹配优先量词 *  +  ?  {min, max}
 匹配优先量词在优先匹配尽量多的字符。


忽略优先量词 *?  +?  ??  {min, max}?
忽略优先量词与匹配优先量词正好相反,匹配尽可能少的内容。


占有优先量词 *+  ++  ?+  {min, max}+
占有优先量词类似普通的匹配优先量词,不过他们一旦匹配某些内容,就不会“交还”。类似固化分组。

常用元字符

在字符组的内部,元字符的定义规则是不一样的。例号.点号在外部表示任意一下字符,但在字符组内只是表示一个.点号。

2009060116220759.jpg

2009060116222584.jpg


2009060116224266.jpg

转载于:https://www.cnblogs.com/abeen/archive/2009/06/01/1493888.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值