2013-04-13 20 views
1

人可以帮我做在C#中使用Regex正则表达式找到N(指定号码)的话之前和特定的单词后

我需要一个正则表达式,这将使我的话的具体数目之前和之后的特定以下搜索该词将包括搜索词本身。请注意我希望能够指定我想要的前后有多少单词。如果搜索词在文本的开头,那么它只返回搜索词后的N个单词,反之亦然,如果搜索词在文本的末尾。此外,搜索应该能够提供来自我可以处理的文本的多个匹配。

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

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

以下结果

“的例子之一” (注意第一搜索如何不具有前2个字)

返回 “是一个例子总结认为”

“为例在这个例子中有多少“

”?我们只有“

谢谢。

+1

如果你有任何相关的代码,我建议你也发布,请。 – Brian

回答

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)做当你在其他测试用例上尝试时,可以对上述内容进行微调。

相关问题