2016-01-25 5 views
1

Я пытаюсь соответствовать MenuSearch и User в этом ocurrencies:Regex матч отрицательной опциональной группа

/MenuSearch?action=read 
/User 

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

/\/(.*)(?=\?)/g 

Но не соответствует User, потому что у них нет линии ?. Как я могу сделать вторую группу регулярных выражений опцией?

Смотреть онлайн: https://regex101.com/r/qU6hN6/2

+1

Для какого языка? –

+0

C Posix используется как CGI –

+1

Это один пример ввода, в котором вы хотите найти два совпадения или два отдельных входа, каждый из которых вы хотите, чтобы ваше регулярное выражение могло соответствовать? –

ответ

0

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

/^\/([^?]+)/gm 

Updated RegEx Demo

+1

Спасибо, сработало! Я подожду несколько минут, чтобы принять как правильный ответ :) –

0

Вы также можете использовать \ ш метасимволом, если вам просто нужно найти буквы.

\/(\w+)/g 
1

/\/([^?^\n]*)(\?.*)?/g

Это захватывает косую черту, \/, за которым следует любое количество не-? non-newline, ([^?^\n]*), необязательно с последующим знаком вопроса, за которым следует любое количество символов, (\?.*)?

Первая группа захвата - это пункт меню, вторая группа захвата - это запрос.

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