Мне нужно реорганизовать мое регулярное выражение, чтобы он соответствовал полужирной части в этой строке:
foo - (bar)() (foo bar) --foo bar foo
Группы захвата заключены в скобки. Кажется, я не могу понять, как сделать так, чтобы он соответствовал "--bar foo bar" и "--bar =" foo bar ". Если он сопоставляется с некотируемым вводом, например --bar foo bar ", он должен остановиться при следующем вводе" - "или в конце строки.
Это регулярное выражение, с которым я работаю:
([^="\'\s]+?)(=| ?)((?:"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\')+)
Спасибо, что так любезно помогли мне в этом вопросе.
Может быть, это что-то вроде этого вам нужно. С использованием ограничивающего взгляда.
/--(\w+)[\s="]+(.*?)(?:"|(?=\s*--|$))/s
Попробуйте в regex101 и возьмите захват, если необходимо.
\ w означает "символ слова". Он всегда соответствует символам ASCII
[A-Za-z0-9_]
.
\ s обозначает "пробельный символ"... он включает в себя[ \t\r\n\f]
www.regular-expressions.info/shorthand.html
php
. Если это регулярное выражение JS, флаг s
отсутствует, нужно использовать [\s\S]*?
вместо .*?
, Удачи, собираемся на обед!
--[^\-\-]+