2015-11-05 3 views
1

мне нужно изменить мое регулярное выражение, чтобы соответствовать смелой части этой строки:Regexp для согласования Cli опционов

Foo - (бар)() (Foo бар) --foo бар Foo

Группы захвата в скобках. Кажется, я не могу понять, как сделать так, чтобы он соответствовал «--bar foo bar» и «--bar =» foo bar ». Если он сопоставляется с некотируемым входом, например. --bar Foo бар», он должен остановиться на следующем появлении„-“или в конце строки

Это регулярное выражение, я работаю с:.

([^="\'\s]+?)(=| ?)((?:"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\')+) 

Спасибо за то, что с такой любовью любезен, чтобы помочь мне с этим вопросом.

+0

Match [ '- [^ \ - \ -] + '] (https://regex101.com/r/lI5zM8/1) – Tushar

+0

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

+0

Уточните, что вы хотите захватить. Если это просто конкретное строковое регулярное выражение, то оно слишком велико. Какую модель вы пытаетесь сопоставить? – Greg

ответ

0

Может быть, это что-то вроде этого вам нужно. с использованием ограничивающей lookahead.

/--(\w+)[\s="]+(.*?)(?:"|(?=\s*--|$))/s 

Have a try at regex101 и захватите захваты, если необходимо.

\ w означает «символ слова». Он всегда соответствует символам ASCII [A-Za-z0-9_].
\ S означает "символ пробела" ... она включает в себя [ \t\r\n\f]
www.regular-expressions.info/shorthand.html

+0

Большое спасибо за ответ! Я сравнил их с regexr.com с той же строкой. Могу ли я каким-то образом сделать эти выражения более совместимыми? http://regexr.com/3c4p6 http://regexr.com/3c4p9 –

+0

@PeterJensen Как вы относитесь к более совместимым? Он должен дать тот же результат в regexr. Вы отметили 'php'. Если это JS-регулярное выражение, нет флага 's', вам нужно использовать' [\ s \ S] *? 'Вместо'. *? '. Удачи, идем на обед! –

+0

Это действительно регулярное выражение PHP. Посмотрите ссылки, которые я добавил в свой комментарий. Извините, если это я что-то пропустил, но в соответствии с regexr он не закрывает заключительную цитату в «foo --bar =» foo bar ». –

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