我有以下字符串...
'(!false >=stuff 300 OR 200 "TEST DATA")'
我弄清楚如何使用以下内容保留引用的文本...
test.match(/\w+|"[^"]+"/g)
但是,输出不是我想要的......
[ 'false', 'stuff', '300', 'OR', '200', '"TEST DATA"' ]
有一个我需要保留的符号列表...
{'<', '>', '<=', '=>', '=', '!'}
这样我的分割应该如下所示......
['(', '!', 'false', '>=', 'stuff', '300', 'OR', '200', '"TEST DATA"', ')']
如何添加到我的 match
函数中以保留以下内容?我不太擅长正则表达式
。
最佳答案
您可以使用:
let str = '(!false >=stuff 300 OR 200 "TEST DATA")'
let arr = str.match(/"[^"]*"|[<>]=|[^\w\s]|\w+/g)
console.log(arr)
//=> ["(", "!", "false", ">=", "stuff", "300", "OR", "200", ""TEST DATA"", ")"]
正则表达式有以下替代方案:
-
"[^"]*"
: 匹配带引号的字符串 -
[<>]=
:匹配<=
或>=
-
[^\w\s]
:匹配任何非空格、非单词字符 -
\w+
:匹配任何单词
关于JavaScript 按多个分隔符分割并保留引用的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51691402/