我试图匹配传递给curl命令的所有参数,如下所示:
curl -X POST --pro2gress -c --command=ASD --dos pl -slp "asd" --asdeee "asd \"hh\" s" "string"
到这个
curl (-X POST) (--pro2gress) (-c) (--command=ASD) (--dos pl) (-slp "asd") (--asdeee "asd \"hh\" s") "string"
到目前为止我所拥有的内容除了来自的所有内容之外 - asdeee to string"
/\-{1,2}[\d\w\-]+[\ \=]+[^\-]*/g
我正在寻找一种从"到"没有停在\"
希望有人能指出我正确的方向。
一起玩的Refiddle(编辑)语言为javascript
谢谢!
答案 0 :(得分:2)
要匹配所有选项,请使用:
--?\S+(?:[ ]+(?!-)(?:[\w-]+|(?<!\\)"(?:\\"|[^"\r\n])*+"))?
请参阅demo。
对于JavaScript(没有占有量词,没有后瞻),您可以使用此lite
版本:
var regex = /--?\S+(?:[ ]*(?!-)(?:\w+|"(?:\\"|[^"\r\n])*"))?/g;
请参阅demo。
--?
匹配一个或两个连字符\S+
匹配任何不是空白字符的字符(空格,制表符等)(?:[ ]*(?!-)(?:[\w-]+|"(?:\\"|[^"\r\n])*"))?
可选地匹配... [ ]+(?!-)
空格字符后面没有连字符,然后是[\w-]+
任意数量的连字符和字符(包括数字)或|
"(?:\\"|[^"\r\n])*"
一个双引号字符串,可能包含转义引号