2013-09-16 59 views
1

显示我有这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之一之前。

任何想法?

回答

2

以下应该工作:

^((?!when|how|where).)*?(ARE|WANNA|DO).*\?$ 

把负先行内部重复组像((?!foo).)*使每个字符匹配之前要检查的先行,所以这将匹配任意数量的任何字符,但停止,如果遇到了foo

示例:http://rubular.com/r/0cw8eaFMXB

1

尝试使用这个:匹配前

^((?:(?!when|how|where).)*?(ARE|WANNA|DO).*\?)$ 
    ^^^     ^

该工作组将“检查”每.,确保每个点不具有when|how|where领先。

相关问题