第一种以 \number的反向引用
reg = <?<name>\w{3}>\s*\1 第二种以 \k<name>的反向引用
reg = <?<name>\w{3}>\s*\k<name> 但是我用以下的也是可以的
reg = <?<name>\w{3}>\s*\<name>
也就是不要\k<name> 改为 \<name>第三种正确吗?
reg = <?<name>\w{3}>\s*\1 第二种以 \k<name>的反向引用
reg = <?<name>\w{3}>\s*\k<name> 但是我用以下的也是可以的
reg = <?<name>\w{3}>\s*\<name>
也就是不要\k<name> 改为 \<name>第三种正确吗?
匿名捕获组:(expression)
命名捕获组:(?<name>expression),另一种形式(?'name'expression)
大多数语言支持匿名捕获组,可以通过编号对其进行访问,目前只有少数语言中支持命名捕获组,可以通过名称对其进行访问相应的,反向引用也有针对匿名捕获组和命名捕获组的引用
匿名捕获组反向引用:\number
命名捕获组反向引用:\k<name>或\k'name'
当然,命名捕获组也是参与编号的,也可以通过\number进行反向引用,只不过规则是先进行匿名捕获组的编号,然后才进行命名捕获组的编号楼主所给的那三种表达式都是错的
Regex reg1 = new Regex(@"(?<name>\w{3})\s*\1");
Regex reg2 = new Regex(@"(?<name>\w{3})\s*\k<name>");
Regex reg3 = new Regex(@"(?<name>\w{3})\s*\k'name'");
没错的哦。那个c#字符串和正则表达式的书,楼主再看,我也就翻出来带在路上翻翻复习,的确有这样写法哦。(?<xx>a)\w+?\'xx'
(?<xx>a)\w+?\<xx>
都是可以的
我也测试n次也是可以的。。
我晚上回去翻翻书。但好像只写了\k<name>的写法
3q
才知道k可以省略。
分组的写法好几种。不过常用的还是\k<name>和\分组编号
习惯就好。:)
今天带小孩,偷闲来看看论坛,阿捷兄最近忙了啊。
[^]]*
这种语法,按道理是不应该支持的,但.NET还就是支持,看来.NET中对正则的支持比我想象的强大不过这种用法不符合常规,可读性也比较差,了解一下就好,建议实际应用中不要使用
http://forum.csdn.net/PointForum/Forum/PostTopic.aspx?forumID=56eedeb3-d039-46aa-8bdd-33a5c45be40e
顺便帮帮忙。
是这个帖子。。写错啦。一时按快了