Регулярное выражение для соответствия опций

1

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

foo - (bar)() (foo bar) --foo bar foo

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

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

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

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

  • 0
    Совпадение --[^\-\-]+
  • 0
    О, лол, да, я вижу, что это работает. Забыл упомянуть, что мне нужны группы захвата, поэтому я пытаюсь заставить работать свое собственное регулярное выражение. Но спасибо, ваш комментарий очень ценится.
Показать ещё 4 комментария
Теги:
preg-match

1 ответ

0

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

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

Попробуйте в regex101 и возьмите захват, если необходимо.

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

  • 0
    Большое спасибо за ответ! Я сравнил их на regexr.com с той же строкой. Можно ли как-нибудь сделать эти выражения более совместимыми? regexr.com/3c4p6 regexr.com/3c4p9
  • 0
    @PeterJensen Как вы имеете в виду более совместимы? Это должно дать тот же результат в регулярном выражении. Вы отметили php . Если это регулярное выражение JS, флаг s отсутствует, нужно использовать [\s\S]*? вместо .*? , Удачи, собираемся на обед!
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню