我有以下场景,其中我有一组短语,有些是单词,有些是单词,我想匹配所有这些短语,但我现在的方法我最终匹配单词
例如:
我可以匹配的事情:
正则表达式:(sunny( )day|sunny( )valley|day)
句子:今天是晴天
在这里,我希望“阳光灿烂的日子”匹配,但是我的正则表达式总是匹配“日”,可能还有其他句子包含我想要匹配的日子。
有谁知道如何设计完成此任务的正则表达式?
答案 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
用于空格
圆括号没用,因为在这种情况下不需要匹配空格。