Regexp用于匹配cli选项

时间:2015-11-05 04:13:52

标签: php regex preg-match

我需要重构我的正则表达式以匹配此字符串中的粗体部分:

  

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

捕获组具有括号。我似乎无法弄清楚如何使它匹配“--bar foo bar”“和”--bar =“foo bar”。如果它与未加引号的输入匹配,例如--bar foo bar“,它应该在下一次出现” - “或字符串末尾时停止。

这是我正在使用的正则表达式:

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

感谢您非常友好地帮助我解决这个问题。

1 个答案:

答案 0 :(得分: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