正则表达式在特定单词之前和之后找到N(指定数字)单词

时间:2013-04-13 16:13:01

标签: c# .net regex search words

有人可以帮我在C#

中使用Regex进行搜索

我需要一个正则表达式,它会在包含搜索词本身的特定单词之前和之后给出特定数量的单词。请注意我希望能够指定我想要之前和之后的单词数量。如果搜索词位于文本的开头,那么它只返回搜索词后面的N个单词,反之亦然,如果搜索词位于文本的末尾。此外,搜索应该能够从我可以处理的文本中提供多个匹配。

例如我想在搜索词“example”周围加上“2”字,以便在多行文字后面返回多个结果。

“本课程中的示例一个是我们用作示例的示例摘要。 这个例子中有多少个单词?我们只想要前几个例子。“

返回以下结果

中的示例1(注意首次搜索没有前2个单词)

“是一个示例摘要”

“作为一个例子。有多少”

“在这个例子中?我们只是”

感谢。

1 个答案:

答案 0 :(得分:3)

根据您的示例,以下正则表达式将起作用

^example \w+ \w+|\w+ \w+ example[\.\?,]? \w+ \w+

示例C#实现

string example = @"example one in this lesson is an example summary that we are using as an example. How many words are in this example? We only want the first few examples.";
string pattern = @"^example \w+ \w+|\w+ \w+ example[\.\?,]? \w+ \w+";

foreach (Match m in Regex.Matches(example, pattern))
{
    Response.Write(m.Value + "<br/>");
}

使用正则表达式调试器(例如debuggex)或正则表达式测试器(例如regexpal)在您尝试使用其他测试用例时对上述内容进行微调。