如何编写以特定单词匹配开头的正则表达式,并持续到达到句点

时间:2012-10-03 01:46:12

标签: regex

我尝试编写一个与特定单词匹配的正则表达式,并继续匹配,直到遇到句点。例如:

文本:

  

除了处女,声称或者先发或者从未赢过三场比赛或者可选的声称价格25,000美元之外,从未赢过两场比赛。三岁儿童,118磅;年龄较大,123磅。自3月9日以来的非赢家$ 24,000允许2磅。

期望比赛:

  

除了处女,声称或者初学者之外从未赢过两场比赛,或者从未赢过三场比赛或者可选的声称价格为25,000美元。

正则表达式:

(?<Match1>Which\s[a-zA-Z]*[.])

不幸的是,我提出的表达式捕获了所有文本,似乎延伸到了最后一段而不是第一段。

3 个答案:

答案 0 :(得分:2)

实际上非常简单。使用[^.]*匹配所有字符,但不包括下一个.,并按\b边界围绕您想要的字词。我将最终的.附加为\.,假设您希望将其包含在匹配的输出中。

(?<Match1>\bWhich\b[^.]*\.)

答案 1 :(得分:2)

(?<Match1>Which[^.]*?[.])

除了一段时间之外的任何事情的非贪婪匹配。

答案 2 :(得分:2)

足够简单:

([^.]*This[^.]*\.)

看到它的实际效果: http://regexr.com?32b8b

简单地用你的单词替换“This”,你应该匹配所有“句子”(如果你真的想要这样做,你应该考虑在你的句号中添加“!”和“?”以匹配句子结尾在那些,也)。

编辑:如果单词完全在其中,则匹配整个句子,如果你只想从单词向前,即如果单词在句子的中间,则省略第一个[^。] *它应该工作。

(This[^.]*\.)