我有一个字符串,它是一个链式进程调用,我需要获取列表中的各个进程,以便我可以处理各个进程。
例如。
如果我有
'funca("hello world").funcb("this.is.sparta").funcc()'
我想获得一个包含
的数组列表['funca("hello world")', 'funcb("this.is.sparta")', 'funcc()']
现在,我无法在“.”上拆分字符串因为传递的参数也可以有“.”特点。我尝试拆分“)”。但这最终会导致看起来丑陋的 split
['funca("hello world"', 'funcb("this.is.sparta"', 'funcc()']
所以基本上我现在需要的是一种在“).”上进行拆分的方法,但仅在关联的“.”上进行拆分。这可以通过 split 函数实现吗?或者我应该获取所有“)”的位置。然后手动拆分?
我不确定如何继续。非常感谢指点。
最佳答案
您可以在正则表达式中使用积极的lookbehind:
String text = "funca(\"hello world\").funcb(\"this.is.sparta\").funcc()";
String[] split = text.split("(?<=\\))\\.");
System.out.println(Arrays.toString(split));
输出:
[funca("hello world"), funcb("this.is.sparta"), funcc()]
正则表达式 (?<=\))\.
匹配前面带有 )
的点.
关于java - 在 Java 中用前一个字符分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29450265/