我正在通过正则表达式拆分代码,它正在做(某种程度上)正确的事情……直到字符串结束。这会是我的正则表达式的问题吗?如果是这样,我该如何解决?
代码:
let args = line.split(/\s(?=(([^"]*"){2})*[^"]*$)/);
console.log("LINE: "+line)
console.log("SPLIT: "+JSON.stringify(args))
输出:
LINE: var String: test = "Hello"
SPLIT: ["var","String: test = \"Hello\"","Hello\"","String:","test = \"Hello\"","Hello\"","test","= \"Hello\"","Hello\"","=","\"Hello\"","Hello\"","\"Hello\""]
预期输出:
LINE: var String: test = "Hello"
SPLIT: ["var", "String:", "test", "=", "\"Hello\""]
最佳答案
我会使用 String.match(regex)
而不是 String.split(regex)
。我会设计一个具有以下特征的正则表达式:
- 捕获
=
,或者 - 捕获带引号的字符串,或者
- 捕获不带引号的字母串
- 并添加一个可选的 ':' 后缀
例如
let line = `var String: test = "Hello"`;
let m = line.match(/(=|"[^"]*"|\w+):?/g);
console.log(m);
// [ "var", "String:", "test", "=", "\"Hello\"" ]
关于javascript - 通过正则表达式拆分是重复参数 NodeJs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73779970/