2013-09-04 6 views
0

поэтому у меня есть это регулярное выражение:сделать регулярное выражение все или ничего

word1\/.+?\/word2($|[^\/]*) 

Я хочу это, чтобы соответствовать

word/2342/word2 

Но НЕ

word/2342/word2/lalallaa 

IE. как только слово2 сопровождается косой чертой, не соответствует AT ALL

Тем не менее, это все равно будет соответствовать части слова «word/2342/word2» второго регулярного выражения ... Я хочу, чтобы он ничего не соответствовал

Как исправить это регулярное выражение?

+1

Добавьте '' 'после того, как убедиться, что это в конце? –

+0

Хотя я не думаю, что я правильно понимаю ваш вопрос, я могу рассказать вам, что я знаю о регулярном выражении, - он будет продолжать разбирать целую цепочку до конца. Я не знаю, как остановить определенное выражение в определенный момент, хотя мне никогда не приходилось исследовать это. –

ответ

0

я попробовал: ^(word1?\/.+?\/word2($|[^\/]*)), который работал в RegExr для макинтоша, я вошел: word/2342/word2/word/2342/word2/ и это только соответствует первой word/2342/word2, но это будет только проверить, если строка начинается с того, что вы просили ... даже простой (word)\/[0-9]{4}\/word2 будет работать и разрешите любые 4 номера посередине .., но ваш вопрос путается относительно того, чего вы действительно хотите от этого?

1

Заменить ($|[^\/]*) на (?!\/) или, по крайней мере, ($|[^\/]). Прямо сейчас, это будет соответствовать любому числу без косых черт - включая ноль.

0

В регулярных выражениях /^abc$/, то ^ чтобы найти шаблон только в начале строки и $, чтобы найти образец только в конце строки. В сочетании он попытается найти совпадение со всей строкой, это похоже на все или ничего не соответствует.

Итак, поместите ваше регулярное выражение в строку в строке abc.

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