使用此代码:regex = new Regex(@"^(?:\S+\s){2}(\S+)");match = regex.Match("one two three four five");if (match.Success){ Console.WriteLine(match.Value);}我想检索该行的第三个单词 --> “three”。但相反,我得到了“一二三”。编辑:我知道我可以用它来做,s.Split(' ')[2]但我想用正则表达式来做。
2 回答
摇曳的蔷薇
TA贡献1793条经验 获得超6个赞
match.Value
返回整个匹配的子字符串,其中包括正则表达式的非捕获部分。您应该改为使用match.Groups[1].Value
来获取第一个捕获组的值。
哈士奇WWW
TA贡献1799条经验 获得超6个赞
如果您只想使用Match
方法而不参考组等,那么您必须使用后视。基本上你说 - 找到一个前面有两个词的词。在您当前的正则表达式中,您说 - 找到我 2 个单词 + 1 个单词,因此您只需将“查找 2 个单词”部分更改为“前面有 2 个单词”,即^(?:\S+\s){2}
更改为(?<=^(\S+\s){2})
(?<=^(\S+\s){2})\S+
- 2 回答
- 0 关注
- 159 浏览
添加回答
举报
0/150
提交
取消