Javascript - 按空格拆分

Javascript - Split by whitespace

本文关键字:拆分 空格 Javascript      更新时间:2023-09-26

我需要用空格拆分字符串,但当在"()"或"[]"中找到空格时则不需要。我从这里发现了几个类似的问题,但我找不到理想的解决方案。

我要解析的字符串可以看起来像这样(方括号也可以用常规括号代替):

(1)"一些文本[更多文本]"

(2)"一些文本[更多文本]"

我希望他们像这样分开:

(1) ["一些"、"案文"、"[更多案文]"]

(2) ["一些"、"案文[更多案文

]]]

Javascript - 除以空格,除非在括号内 - 这个问题非常相似,答案在第一 (1) 情况下效果非常好。但在第二 (2) 种情况下,它的效果并不好。拆分后,它看起来像这样:

[

"一些"、"文本[更多"、"文本]"]

有没有一种简单的方法可以实现我想要的?

这些似乎有效:

1: '[[^']]+']|'S+'[[^']]+']|'S+
2: '[[^']]+']|('S('[[^']]+'])?)+
3: ('S+)?'[[^']]+']|'S+
  • 例1
  • 例2
  • 例3

根据正则表达式英雄的说法,第一个是迄今为止优越的,而米格尔的回答略快。

尝试(/('w+ )|('w+)?(('[|'().*(']|'))$)/g)

var a = "Some text [more text]";
var b = "Some text[more text]";

结果是:

a.match(/('w+ )|('w+)?(('[|'().*(']|'))$)/g)
[

"一些"、"文本"、"[更多文本]"]

b.match(/('w+ )|('w+)?(('[|'().*(']|'))$)/g)
[

"一些","文本[更多文本]"]

使用此正则表达式:

/('w+)?('([^')]*?')|'[[^']]*?'])('w+)?|'w+/g

样品

console.log( 'Some(1) text [more text]'.match(regex) );
//Output-> ["Some(1)", "text", "[more text]"]
console.log( '(2) Some text[more text]'.match(regex) );
//Output-> ["(2)", "Some", "text[more text]"]
console.log( '(3 45)Some text[more text]'.match(regex) );
//Output-> ["(3 45)Some", "text[more text]"]