【问题标题】:Regex to find N (specified number) words before and after a specific word正则表达式在特定单词之前和之后查找 N(指定数量)单词
【发布时间】:2013-04-13 16:13:00
【问题描述】:

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

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

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

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

返回以下结果

“example one in”(注意第一次搜索没有前两个字)

“是一个示例摘要”

“举个例子。有多少”

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

谢谢。

【问题讨论】:

  • 如果你有任何相关的代码,我建议你也发布,拜托。

标签: c# .net regex search words


【解决方案1】:

根据您的示例,以下正则表达式可以工作

^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)在您对其他测试用例进行尝试时对上述内容进行微调。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多