kag*_*san 3 c# regex right-to-left
注意!这不涉及到正则表达式的问题,整个字符串相匹配的部分,而不是
大家好.我试着去做
Match y = Regex.Match(someHebrewContainingLine, @"^.{0,9} - \[(.*)?\s\d{1,3}");
Run Code Online (Sandbox Code Playgroud)
除了其他VS希伯来语怪癖(你喜欢如何替换)[编辑字符串?)时,它偶尔会返回疯狂的结果:
Match.Captures.Count = 1;
Match.Captures[0] = whole string! (not expected)
Match.Groups.Count = 2; (not expected)
Match.Groups[0] = whole string again! (not expected)
Match.Groups[1] = (.*)? value (expected).
Run Code Online (Sandbox Code Playgroud)
Regex.Matches() 同样的行为.
这种行为的一般原因是什么?注意:它不会像这样简单的测试字符串Regex.Match("-???45--", "-(.{1,5})-") (样本显示不正确!,请查看页面的源代码),必须有正则表达式使其贪婪.匹配的字符串包含[ .... ],但只是将它们添加到测试字符串不会导致相同的效果.
我第一次开始使用.NET正则表达式时遇到了这个问题.理解这一点的方法是要理解Group成员Match是嵌套成员.你必须遍历Groups才能降低捕获量.团体也有Capture成员.该Match是有点像,因为它代表对你表达的整串的成功"匹配"顶"集团".单个输入字符串可以有多个匹配项.该Captures成员代表您的完整表达式的匹配.
只要您拥有一个捕获,Group[1]就会始终是您感兴趣的数据.请查看此页面.示例2和3中的源代码被硬编码以打印出来Groups[1].
请记住,单个捕获可以在单个匹配操作中捕获多个子字符串.如果是这种情况,那么你会看到Match.Groups[1].Captures.Count大于1.此外,我认为如果你将多个匹配的文本行传递给单个Match调用,那么你会看到Match.Captures.Count大于1,但每个顶级Match.Captures都是完整的字符串与您的完整表达式匹配.
| 归档时间: |
|
| 查看次数: |
1881 次 |
| 最近记录: |