为了账号安全,请及时绑定邮箱和手机立即绑定

获取一行的第 n 个单词

获取一行的第 n 个单词

C#
慕婉清6462132 2021-11-28 20:07:16
使用此代码: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来获取第一个捕获组的值。


查看完整回答
反对 回复 2021-11-28
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

如果您只想使用Match方法而不参考组等,那么您必须使用后视。基本上你说 - 找到一个前面有两个词的词。在您当前的正则表达式中,您说 - 找到我 2 个单词 + 1 个单词,因此您只需将“查找 2 个单词”部分更改为“前面有 2 个单词”,即^(?:\S+\s){2}更改为(?<=^(\S+\s){2})

(?<=^(\S+\s){2})\S+


查看完整回答
反对 回复 2021-11-28
  • 2 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信