我尝试编写一个与特定单词匹配的正则表达式,并继续匹配,直到遇到句点。例如:
文本:
除了处女,声称或者先发或者从未赢过三场比赛或者可选的声称价格25,000美元之外,从未赢过两场比赛。三岁儿童,118磅;年龄较大,123磅。自3月9日以来的非赢家$ 24,000允许2磅。
期望比赛:
除了处女,声称或者初学者之外从未赢过两场比赛,或者从未赢过三场比赛或者可选的声称价格为25,000美元。
正则表达式:
(?<Match1>Which\s[a-zA-Z]*[.])
不幸的是,我提出的表达式捕获了所有文本,似乎延伸到了最后一段而不是第一段。
答案 0 :(得分:2)
实际上非常简单。使用[^.]*
匹配所有字符,但不包括下一个.
,并按\b
边界围绕您想要的字词。我将最终的.
附加为\.
,假设您希望将其包含在匹配的输出中。
(?<Match1>\bWhich\b[^.]*\.)
答案 1 :(得分:2)
(?<Match1>Which[^.]*?[.])
除了一段时间之外的任何事情的非贪婪匹配。
答案 2 :(得分:2)
足够简单:
([^.]*This[^.]*\.)
看到它的实际效果: http://regexr.com?32b8b
简单地用你的单词替换“This”,你应该匹配所有“句子”(如果你真的想要这样做,你应该考虑在你的句号中添加“!”和“?”以匹配句子结尾在那些,也)。
编辑:如果单词完全在其中,则匹配整个句子,如果你只想从单词向前,即如果单词在句子的中间,则省略第一个[^。] *它应该工作。
(This[^.]*\.)