=15 AND AGE=15 AND AGE=15-6ren">
gpt4 book ai didi

Java 需要帮助改进具有挑战性的正则表达式

转载 作者:行者123 更新时间:2023-12-01 13:47:18 26 4
gpt4 key购买 nike

我们有如下所示的业务规则:

String S= "IF (A=3 AND B=2)=0 AND IF(c=4 AND D=5)=1 AND (AGE>=15 AND AGE<=45)"

我必须将上面的字符串分成三个部分,如下所示:

IF (A=3 AND B=2)=0   
IF(c=4 AND D=5)=1
(AGE>=15 AND AGE<=45)

我已尝试使用以下正则表达式 [^AND].*\\)=0|1要拆分,我得到前两个,但不是最后一个 (AGE>=15 AND AGE<=45) .

有人可以帮我解决这个问题吗?我缺少什么?

最佳答案

当不在括号内时,通过断言(通过前瞻)下一个括号字符(如果有)是开括号来拆分 AND:

String[] parts = str.split(" *AND *(?=[^)]*(\\(|$))");

这里有一些测试代码,显示了它的工作原理:

String str = "IF (A=3 AND B=2)=0 AND IF(c=4 AND D=5)=1 AND (AGE>=15 AND AGE<=45)";
String[] parts = S.split(" *AND *(?=[^)]*(\\(|$))");
System.out.println(Arrays.toString( parts));

输出:

[IF (A=3 AND B=2)=0, IF(c=4 AND D=5)=1, (AGE>=15 AND AGE<=45)]

关于Java 需要帮助改进具有挑战性的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20265808/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com