java - 在 Java 中用前一个字符分割字符串

标签 java regex split

我有一个字符串,它是一个链式进程调用,我需要获取列表中的各个进程,以便我可以处理各个进程。

例如。

如果我有

'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/

相关文章:

python - 如何从用户输入中读取多个(可变长度)参数并将其存储在变量中并将其传递给函数

java - 正则表达式 replaceAll 的问题

java - 将 US-ASCII 编码字节转换为整数并返回

java - 如何找到字符串中单词的精确匹配

java - 用空格分隔字符串

arrays - 将一个源数组拆分为多个副本的正确方法是什么?

java - 使用 play 框架登录多个文件

java - 逐层旋转二维数组

javascript - 澄清 XSS(跨站脚本)预防备忘单中的规则之一

c# - 寻找简单而强大的 windows 通配符 (`*, ?` ) 匹配实现