获取一行的第 n 个单词

使用此代码:


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]但我想用正则表达式来做。


慕婉清6462132
浏览 160回答 2
2回答

摇曳的蔷薇

match.Value返回整个匹配的子字符串,其中包括正则表达式的非捕获部分。您应该改为使用match.Groups[1].Value来获取第一个捕获组的值。

哈士奇WWW

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