【发布时间】:2016-11-01 08:50:19
【问题描述】:
我知道这个问题以前曾多次被问过,但我似乎无法将所有数据合并到一个有效的解决方案中
动机
我有一个JScript 在WSH 下运行。但是,这本质上是一个简单的javascript | regexp问题
我正在尝试解析一个字符串。要求:
- 用多个分隔符分割:
-、= - 忽略用双引号括起来的分隔符
- 在结果中保留分隔符
示例
这是我一直在使用的字符串。双引号是字符串的一部分
"C:\\Users\\u 1\\a-b\\f1.txt" -CONFIG="C:\\Users\\u 1\\c=d\\f2.xfg"-ARGS=/quite /v1
拆分后的预期结果
"C:\\Users\\u 1\\a-b\\f1.txt"-CONFIG="C:\\Users\\u 1\\c=d\\f2.xfg"-ARGS=/quite /v1
尝试失败
var str = '"C:\\Users\\u 1\\a-b\\f1.txt" -CONFIG="C:\\Users\\u 1\\c=d\\f2.xfg"-ARGS=/quite /v1';
var res = str .split(/-(?=(?:(?:[^"]*"){2})*[^"]*$)/);
失败结果:
\"C:\\Users\\u 1\\a-b\\f1.txtCONFIG=\"C:\\Users\\u 1\\c=d\\f2.xfg\"ARGS=/quite /v1
【问题讨论】:
-
那么转义引号 (
\\") 呢? -
似乎
Amadan解决方案在这种情况下效果很好 -
试试
str.match(/"(?:\\[\s\S]|[^"])*"|[-=]|[^-="\s][^-="]*/g) -
@ndn:确实我的代码不会正确对待它们。它属于我的免责声明(更多测试字符串 = 更好的要求 = 更少奇怪的极端情况错误)。
标签: javascript regex split jscript wsh