我正在尝试使用JavaScript解析字符串。字符串用引号括起来,或者是单个=
字符。
例子:
"String 1" "String 2" "String 3"
"String 1" = "String 3"
"String 1" "String 2" =
"String 1" = =
我发现以下RegEx模式仅涵盖了第一种情况 - 至少当我在RegExr上使用它时,它在JavaScript中不起作用:(["'])(?:(?=(\\?))\2.)*?\1
例:
const re = /(["'])(?:(?=(\\?))\2.)*?\1/;
const str = '"String 1" "String 2" "String 3"';
re.exec(str);
//=> [""String 1"", """, "", index: 0, input: ""String 1" "String 2" "String 3"", groups: undefined]
如何将此模式转换为在JavaScript中工作?如何将=
添加到模式中?
假设你不关心转义的引号(例如"a\"b"
),那么这个正则表达式将匹配引用的字符串或等号:"[^"]*"|'[^"]*'|=
。你可以用它作为:
let input = `"String 1" "String 2" 'String 3' = = "string 4"`;
let matches = input.match(/"[^"]*"|'[^"]*'|=/g);
console.log(matches);
[
"\"String 1\"",
"\"String 2\"",
"'String 3'",
"=",
"=",
"\"string 4\""
]