获取一行的第n个字

时间:2018-08-15 14:10:58

标签: c# regex

使用以下代码:

regex = new Regex(@"^(?:\S+\s){2}(\S+)");
match = regex.Match("one two three four five");
if (match.Success)
{
    Console.WriteLine(match.Value);
}

我想检索该行的第三个单词->“三”。 但是相反,我得到“一二三”。

编辑: 我知道我可以用s.Split(' ')[2]来做,但是我想用正则表达式来做。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

如果只想使用Match方法而不引用组等,则必须使用后向。基本上,您说的是-找到一个以两个词开头的词。在您当前的正则表达式中,您说-找到2个单词+ 1个单词,因此您只需要将“查找2个单词”部分更改为“在2个单词之前”,即^(?:\S+\s){2}更改为(?<=^(\S+\s){2}) < / p>

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