我有Regex (Live):
^((?!when|how|where).*?(ARE|WANNA|DO).*\?)$
这三句话:
Hey are we out after the rain?
Where are we meeting?
Dan where are we gonna meet?
我的正则表达式匹配1和3,但只能匹配1。
我的基本规则是其中一个单词when|how|where
无法出现在其中一个单词ARE|WANNA|DO
之前。
有什么想法吗?
答案 0 :(得分:2)
以下内容应该有效:
^((?!when|how|where).)*?(ARE|WANNA|DO).*\?$
将负前瞻放在像((?!foo).)*
这样的重复组中会导致在每个字符匹配之前检查前瞻,因此这将匹配任何数字的任何字符,但如果遇到foo
则停止。 / p>
答案 1 :(得分:1)
请尝试使用此代码:
^((?:(?!when|how|where).)*?(ARE|WANNA|DO).*\?)$
^^^ ^
在匹配之前,此论坛会“检查”每个.
,并确保每个点前面都没有when|how|where
。