正则表达式匹配* abc *但不是* bc * abc * bc *

时间:2013-11-29 15:48:44

标签: regex expression

我正在尝试找到一个正则表达式来匹配具有字符串“question”但没有或包含字符串“ion”的所有字符组合。

的示例:

questionxxxx ------> match

xxxquestion--------> match

questionxxxxion----> not match

xxxquestionxxx-----> match

xxxionxxxquestion--> not match

我差不多了,但是我错过了什么!!!

这就是我所做的:

((?=.*question(?!.*ion.*).).*)|^question$

此表达式排除了所有与“quest”分隔的“ion”的字符串,但不幸的是也排除了“xxxquestion”

2 个答案:

答案 0 :(得分:5)

我不知道你需要这个解决方案有多普遍,但以下适用于你的例子:

(?!.*(?<!quest)ion)^.*question.*$

RegExr Example

答案 1 :(得分:0)

使用perl兼容的正则表达式,您可以使用:

^(?:(question)|[^i]+|i(?!on))+(?(1)|(?!))$

使用其他正则表达式,您可以使用:

^(?:[^qi]+|q(?!uestion)|i(?!on))*question(?:[^i]+|i(?!on))*$