我需要在空格字符('')上拆分字符串,但同时排除 2个特定字符(比如单引号)内的任何空格.
这是一个示例字符串:
这是第一个令牌,这是第二个令牌'这是第三个令牌'
输出数组应如下所示:
[0] = This-is-first-token
[1] = This-is-second-token
[2] = 'This is third token'
Run Code Online (Sandbox Code Playgroud)
问题:这可以通过正则表达式优雅地完成吗?
eli*_*ide 10
一个简单的正则表达式将是:
/'[^']+'|[^\s]+/g
Run Code Online (Sandbox Code Playgroud)
data = "This-is-first-token This-is-second-token 'This is third token'";
data.match(/'[^']+'|[^\s]+/g);
Run Code Online (Sandbox Code Playgroud)
结果:
["This-is-first-token", "This-is-second-token", "'This is third token'"]
Run Code Online (Sandbox Code Playgroud)

我认为这很简单,你可以只用正则表达式.
将g在年底成为全球性的比赛,所以你得到所有三场比赛.没有它,你只得到第一个字符串.
\s匹配所有空格(基本上 and tabs, in this instance). So, it would work even if there was a tab between This-is-first-token和之间有一个标签,它也会起作用This-is-second-token.
要匹配大括号中的内容,请使用以下命令:
data.match(/\{[^\}]+\}|[^\s]+/g);
Run Code Online (Sandbox Code Playgroud)

大括号或单引号:
data.match(/\{[^\}]+\}|'[^']+'|[^\s]+/g);
Run Code Online (Sandbox Code Playgroud)
