专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » 超定方程组正则:正则 捕获组(capture group) »正文

超定方程组正则:正则 捕获组(capture group)

来源: 发布时间:星期一, 2009年9月7日 浏览:7次 评论:0
捕获组有两种形式
种是普通捕获组不产生歧义情况下后面简称捕获组语法规则:(expression);
种是命名捕获组语法规则:(?<name>expression)或者(?'name'expression)这两种写法是等价

1、编号规则
如果没有显式为捕获组命名即没有使用命名捕获组那么需要按数字顺序来访问所有捕获组
在只有普通捕获组情况下捕获组编号是按照“(”出现顺序从左到右编号

(\d{4})-(\d{2}-(\d\d))
1 1 2 3 3 2

上面正则表达式可以用来匹配格式为yyyy-MM-dd日期为了在下表中得以区分采用了\d{2}和\d\d两种写法
还有个默认编号为0表示是正则表达式整体
用以上正则表达式匹配串:2008-12-31
匹配结果为:
编号 命名 捕获组 匹配内容
0 (\d{4})-(\d{2}-(\d\d)) 2008-12-31
1 (\d{4}) 2008
2 (\d{2}-(\d\d)) 12-31
3 (\d\d) 31



如果对组进行了显式命名即命名捕获组那么捕获内容可以通过组名称来引用
但是如果正则表达式中既使用了普通捕获组也使用了命名捕获组那么捕获组编号就要特别注意编号规则是先对普通捕获组进行编号再对命名捕获组进行编号

(\d{4})-(?<date>\d{2}-(\d\d))
1 1 3 2 23

用以上正则表达式匹配串:2008-12-31
匹配结果为:


编号 命名 捕获组 匹配内容
0 (\d{4})-(\d{2}-(\d\d)) 2008-12-31
1 (\d{4}) 2008
2 (\d\d) 31
3 date (?<date>\d{2}-(\d\d)) 12-31







2、捕获组引用
对捕获组引用般有以下几种
a) 正则表达式中对前面捕获组捕获内容进行引用称为反向引用
b) 正则表达式中(?(表达式)true|false)条件表达式
c) 在对捕获组捕获内容引用

反向引用
对于普通捕获组引用语法规则为:\k<num>通常简写为\num其中num是十进制数字即捕获组编号
对于命名捕获组引用语法规则为:\k<name>或者\k'name'
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: