正则表达式:在空格上拆分一个字符串 + 每个要单独包含的特殊字符

Regex: split a string on whitespace + each special character to be included separately

本文关键字:字符串 单独包 特殊字符 一个 空格 拆分 正则表达式      更新时间:2023-09-26

我将如何编写使用正则表达式来拆分字符串,如下所示:

"foo bar, foobar (bar)" => ["foo", "bar", ",", "foobar", "(", "bar", ")"]

即在空格上拆分 + 每个特殊字符应单独包含在结果数组中

我不会拆分,而是做相反的事情; 找到'w+|[^'w's]的所有匹配项。

我可能会做这样的事情

var foo = []; 
"foo bar, foobar (bar)".split(/('W)/).forEach(function(elem) {
    if (!/^'s*$/.test(elem)) { 
        foo.push(elem);
    }
}); 
// foo = (object) ['foo', 'bar', ',', 'foobar', '(', 'bar', ')']

新数组 "foo" 将包含您的所有值。

我想出了每个('w+|[,()]) http://rubular.com/r/BGAFLOmkgP

您可以在以下正则表达式上拆分:

"'s|(?='W)"

好吧,这个将为您提供以下输出:

["foo", "bar", ",", "foobar", "", "(bar", ")"]

由于Javascript不支持后视,因此不可能在这里拆分(bar分成两个单独的元素。

更好的方法是匹配而不是拆分。您想要的只是获取与以下正则表达式模式匹配的所有子字符串:

"'w+|[^'w's]"

要将_用作特殊字符,可以使用:

"[^_'W]+|[^a-zA-Z0-9's]"