Один из моих домашних заданий задал вопрос о разработке регулярного выражения для всех строк свыше x,y,z
, которые не содержали xxx
После прочтения я узнал об отрицательном прогнозе и сделал это, которое прекрасно работает:
(x(?!xx)|y|z)*
Тем не менее, в духе завершенности, есть ли возможность написать это без негативного взгляда?
Чтение, которое я сделал, заставляет меня думать, что это можно сделатьс некоторой комбинацией carets
(^)
, но я не могу получить правильную комбинацию, поэтому я не уверен.
Если сделать шаг вперед, можно ли исключить строку типа xxx
, используя толькоor
(|)
оператор, но все еще проверять строки рекурсивным способом?
РЕДАКТИРОВАТЬ 06.09.2010:
Думаю, я ответил на свой вопрос.Я еще немного запутался, пытаясь сделать это регулярное выражение только с or
(|)
утверждениями, и я почти уверен, что понял это ... и это не так беспорядочно, как я думал.Если бы у кого-то было время проверить это человеческим глазом, я был бы признателен.
(xxy|xxz|xy|xz|y|z)*(xxy|xxz|xx|xy|xz|x|y|z)