Java分割字符串正则表达式

Java分割字符串正则表达式,java,regex,string,split,tokenize,Java,Regex,String,Split,Tokenize,这是一个字符串,我想拆分字符串,使符号和“单词”分开。例如: String s = "/xyz/abc[bcd(text(),\"string\")]"; 我想要一个字符串数组,比如 String[] result = {"/","xyz","/","abc","[","bcd","(","text","(",")",",","\"","string","\"",")","]"} 如何使用正则表达式来实现这一点 这应该有效: String str = "/xyz/abc[bcd(text()

这是一个字符串,我想拆分字符串,使符号和“单词”分开。例如:

String s = "/xyz/abc[bcd(text(),\"string\")]";
我想要一个字符串数组,比如

String[] result = {"/","xyz","/","abc","[","bcd","(","text","(",")",",","\"","string","\"",")","]"}
如何使用正则表达式来实现这一点

这应该有效:

String str = "/xyz/abc[bcd(text(),\"string\")]";

String[] arr = str.split("(?<=\\G(?>\\w+|\\W))\\s*");
说明:
  • 正则表达式正在使用从上次匹配位置末尾匹配的\G
  • (?>…)
    是一个原子组(更多详细信息:)

用户anubhava已经回答了您的问题,但在将来重新登录时会非常有用。我一直把它当作一种工具,尽管有很多选择

有助于尝试和错误:)


祝你好运,编码快乐

谢谢!如果字符串中有空格,我想在拆分字符串时忽略这个空格?例如
String s=“/xyz/abc[bcd(text(),\“String\”)”@anubhava回答得好你能解释一下你想在这里做什么吗?@CSnerd:嗯,所以你在改变问题的本质。我先添加我的解释,然后我将检查修改后的问题是否可以用这种方式解决。@anubhava我找到了一种可以使用s=s.replaceAll(“,”)的方法;如果修改答案需要这么多工作。很好,很高兴知道。另请参见更新的代码以丢弃间隔。
["/", "xyz", "/", "abc", "[", "bcd", "(", "text", "(", ")", ",", """, "string", """, ")", "]"]