正则表达式 - 匹配两个单词或一个单词,但优先考虑两个单词

时间:2015-10-20 17:10:28

标签: java python regex

我有以下场景,其中我有一组短语,有些是单词,有些是单词,我想匹配所有这些短语,但我现在的方法我最终匹配单词

例如:

我可以匹配的事情:

  • 晴天
  • 晴朗的山谷

正则表达式:(sunny( )day|sunny( )valley|day)

句子:今天是晴天

在这里,我希望“阳光灿烂的日子”匹配,但是我的正则表达式总是匹配“日”,可能还有其他句子包含我想要匹配的日子。

有谁知道如何设计完成此任务的正则表达式?

2 个答案:

答案 0 :(得分:3)

你的正则表达式匹配" day"在里面"今天"因为它是最左边的(第一个)" day"输入字符串中的子字符串。

使用单词边界仅匹配整个单词:

\b(sunny( )day|sunny( )valley|day)\b

请参阅regex demo

答案 1 :(得分:1)

不生成额外的空格匹配。 OP发表评论。我建议这个正则表达式:

\b(sunny\sday|sunny\svalley|day)\b (demo)

PS:

\s用于空格

圆括号没用,因为在这种情况下不需要匹配空格。