1

有人可以帮我Regex在 C# 中使用以下搜索吗

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

例如,我想在搜索词“example”周围获得“2”个词,以便在多行文本之后返回多个结果。

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

返回以下结果

“example one in” (注意第一次搜索没有前 2 个单词)

“是一个示例摘要”

“举个例子。有多少”

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

谢谢。

4

1 回答 1

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 )对上述内容进行任何微调。

于 2013-04-13T16:40:21.873 回答