Мод Переписать RegEx, чтобы соответствовать только если предыдущий подмножество соответствует - PullRequest
2 голосов
/ 23 мая 2011

Я пытаюсь сделать то, что я считаю простым регулярным выражением для использования с mod_rewrite.

Я пробовал различные выражения, многие из которых я считал многообещающими, но все они в конечном итоге потерпели неудачу по той или иной причине. Кажется, что все они тоже перестают работать, когда я добавляю начальные / конечные разделители строк.

Например, ^user/(\d{1,10})(?=/)$ был одним из тех, что я пробовал, но, между прочим, похоже, что групповая косая черта сгруппирована, и я хочу сгруппировать только цифры. Я думаю, что мне нужно использовать позитивный взгляд сзади, но я испытываю трудности, потому что он смотрит назад на группу.

Я пытаюсь сопоставить строки, которые 1) начинаются с "user /" и 2) могут заканчиваться (\d{1,10})/ (от 1 до 10 цифр, за которыми следует одна косая черта)

Должно совпадать:

user/
user/123/
user/1234567890/

Не должно совпадать:

user
user//
user/-4/
user/35.5/
user/123
user/123//
user/123/5/
user/12345678901/

Редактировать : Извините за форматирование; Я не понимаю, как отформатировать что-либо через эту уценку. Этим примерам предшествуют 4 пробела, которые, как я думал, должны составлять блок кода, но, очевидно, я думал неправильно.

Ответы [ 2 ]

1 голос
/ 23 мая 2011

^user/(?:([0-9]{1,10})/)?$ должно работать просто отлично.

0 голосов
/ 23 мая 2011

Это: ^user(?=/)(/\d{1,10})?/$ Редактировать: если вы хотите сгруппировать цифры, ^user(?=/)(?:/(\d{1,10}))?/$

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...