正则表达式:如何拆分这个字符串

3

现在时间有点晚,我遇到了麻烦,请问有人可以帮帮我吗?我想要对这个进行分割 ...

[stuffa1,stuffa2],[stuffb1,stuffb2]

转化为

[stuffa1,stuffa2]
[stuffb1,stuffb2]

通过正则表达式。

它也可以是...

[stuffa1,stuffa2]

或者

[stuffa1,stuffa2],[stuffb1,stuffb2],[stuffc1,stuffc2]

1
是的 - 总是包括您用于执行正则表达式的语言或工具(并将其标记为该语言) - Code Jockey
2个回答

5

有几种方法可以做到这一点。

无需使用正则表达式

  1. 删除第一个字符 ([)
  2. 删除最后一个字符 (])
  3. 根据 ],[ 进行分割
  4. 现在你有像 stuffa1,stuffa2 的片段。如果需要,可以将每个字符串加回 []

使用支持向后查找(和向前查找)的正则表达式

按照以下进行分割:

(?<=\]),(?=\[)

这将为您提供完整的代码片段,看起来像是[stuffa1,stuffa2]

在最有可能的情况下,+1... 语法非常不可能,但如果有某种转义允许在值内使用\](不太可能),然后恰好在其中一个值后面放置了一个,[(即:blah\],[blah),那么这两个解决方案都会失效...但这种情况可能发生吗?我不知道... - Code Jockey

2
你可以使用正向先行和后行来将方括号([])添加到分隔符中,而不包含它们作为分隔符本身的一部分:
String input = "[stuffa1,stuffa2],[stuffb1,stuffb2]";
String[] groups = input.split("(?<=\\]),(?=\\[)");

语言: Java。 "纯"正则表达式为(?<=\]),(?=\[)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接