2013-11-29 4 views
3

Я пытаюсь найти регулярное выражение, соответствующее всей комбинации символов, которые имеют строку «вопрос», но не имеют или содержат строку «ion» ».Совпадение регулярных выражений * abc *, но не * bc * abc * bc *

примеры:

questionxxxx ------> match

xxxquestion--------> match

questionxxxxion----> not match

xxxquestionxxx-----> match

xxxionxxxquestion--> not match

Я почти там, но мне что-то не хватает !!!

это то, что я сделал:

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

Это выражение исключает все строки с «ион» отделено от «квест», но, к сожалению, также исключает «xxxquestion»

+1

Какой язык вы используете? –

+1

Как насчет 'questionquestion'? – Toto

+0

нет, просто пытаюсь найти правильное выражение в [RegExr] (http://gskinner.com/RegExr/?2v9bp) – user3049861

ответ

5

Я понятия не имею, как вообще вам нужно это решение будет, но следующие работы для вашего примера:

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

RegExr Example

+1

yep, это работает так, как должно быть;) thx – user3049861

0

С Perl Compatible регулярных выражений вы можете использовать это:

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

С другими вкусами регулярных выражений вы можете использовать это:

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

это тоже работает;) thx – user3049861

Смежные вопросы