我需要在空格字符 (' ') 上拆分字符串,但同时排除任何空格 出现在 2 个特定字符(比如单引号)内。
这是一个示例字符串:
This-is-first-token This-is-second-token 'This is third token'
输出数组应该是这样的:
[0] = This-is-first-token
[1] = This-is-second-token
[2] = 'This is third token'
问题: 这可以用正则表达式优雅地完成吗?
最佳答案
简答:
用于此目的的简单正则表达式是:
/'[^']+'|[^\s]+/g
示例代码:
data = "This-is-first-token This-is-second-token 'This is third token'";
data.match(/'[^']+'|[^\s]+/g);
结果:
["This-is-first-token", "This-is-second-token", "'This is third token'"]
说明:
我认为这很简单,只要用一个正则表达式就可以做到。
末尾的 g
使其成为全局匹配项,因此您可以获得所有三个匹配项。没有它,您只会得到第一个字符串。
\s
匹配所有空格(在本例中基本上是 和制表符)。因此,即使在
This-is-first-token
和 This-is-second-token
之间有一个选项卡,它也能正常工作。
要匹配大括号中的内容,请使用:
data.match(/\{[^\}]+\}|[^\s]+/g);
大括号或单引号:
data.match(/\{[^\}]+\}|'[^']+'|[^\s]+/g);
关于Javascript 正则表达式 - 忽略 2 个字符之间的某些字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20114005/