= 200201 AND TEST_DA-6ren">
gpt4 book ai didi

java - 多行正则表达式匹配问题

转载 作者:行者123 更新时间:2023-11-30 07:19:33 25 4
gpt4 key购买 nike

我尝试通过正则表达式匹配以下字符串:

;IF TEST_DATE <= 200112 THEN E>=90 AND S>=90
OR P = "25" ENDIF
IF TEST_DATE >= 200201 AND TEST_DATE < 200407 THEN E>=89
AND S>=90 OR P = "25" ENDIF

我正在使用以下正则表达式尝试匹配从分号(旨在作为注释)到第一个 ENDIF:

;\s*IF (\d|\D)+ ENDIF

不幸的是,这个模式一直匹配到第二个 ENDIF。我尝试了各种使用 Java Pattern.DOTALL 以及 (?s) 标志的解决方案,但没有成功。

最佳答案

您正在使用贪婪量词,因此您的模式(\d|\D) 匹配所有内容,直到找到最后一个ENDIF .

如果您希望正则表达式在第一个 ENDIF 处停止匹配,则需要使用 reluctant quantifier - +? : -

;\s*IF (\d|\D)+? ENDIF

关于java - 多行正则表达式匹配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14606800/

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