正则表达式提取句子中的单词

时间:2014-08-20 11:54:05

标签: regex

我的输入是

The world is round. We meet everyone quite soon. It is a small world. Be happy.

我希望句子中包含小而快乐的单词。 我的正则表达式为[.]\\s*.*?small.*?happy.*?[.] 预期的输出是

It is a small world. Be happy.

但我得到的输出为

  

。我们很快就会见到大家。这是一个小世界。快乐。

有人可以帮帮我吗?

4 个答案:

答案 0 :(得分:3)

您可以在此处使用单词边界\b

\b[^.]*small.*?happy[^.]*\.

或制作自己的界限。

(?:^|\. )([^.]*small.*?happy[^.]*\.)

答案 1 :(得分:2)

你可以试试下面的正则表达式,

(?<=^|\. )[^.]*small.*?happy[^.]*\.

DEMO

答案 2 :(得分:0)

使用这些正则表达式:

(?<!\.)[^.]*small[^.]*\.
(?<!\.)[^.]*happy[^.]*\.

这是regex demo

  • (?<!\.)断言我们不是在一个句号之前,这允许在句子之间的空格之后进行匹配。
  • [^.]*匹配任何不是点的字符序列,从而有效地限制句子。
  • happy字符序列&#34; happy&#34;
  • [^.]*
  • \.以句点结束。

答案 3 :(得分:0)

试试以下正则表达式:

((?<=^|\. )[^.]*?(?:small|happy)[^.]*\.)

demo

输出:

MATCH 1
1.  [49-69] `It is a small world.`
MATCH 2
1.  [70-79] `Be happy.`