如何否定一个文字字符串

时间:2014-06-24 01:53:24

标签: javascript regex

我试图匹配传递给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

我正在寻找一种从"到"没有停在\"

希望有人能指出我正确的方向。

以下是与http://refiddle.com/14o4

一起玩的Refiddle

(编辑)语言为javascript

谢谢!

1 个答案:

答案 0 :(得分:2)

要匹配所有选项,请使用:

--?\S+(?:[ ]+(?!-)(?:[\w-]+|(?<!\\)"(?:\\"|[^"\r\n])*+"))?

请参阅demo

对于JavaScript(没有占有量词,没有后瞻),您可以使用此lite版本:

var regex = /--?\S+(?:[ ]*(?!-)(?:\w+|"(?:\\"|[^"\r\n])*"))?/g;

请参阅demo

  • --?匹配一个或两个连字符
  • \S+匹配任何不是空白字符的字符(空格,制表符等)
  • 非捕获组(?:[ ]*(?!-)(?:[\w-]+|"(?:\\"|[^"\r\n])*"))?可选地匹配...
  • [ ]+(?!-)空格字符后面没有连字符,然后是
  • [\w-]+任意数量的连字符和字符(包括数字)或|
  • "(?:\\"|[^"\r\n])*"一个双引号字符串,可能包含转义引号