gpt4 book ai didi

java - 组 REGEX 的向左贪婪

转载 作者:行者123 更新时间:2023-12-02 07:44:56 25 4
gpt4 key购买 nike

下一个正则表达式表示任何 1 到 3 位数字的可选组以及 4 个非空白字符的任何可选组。

^([\d]{1,3})?(\S{4})?$

我的问题是,如果我输入 444EEE,Java 会将其匹配为 44 + 4EEE,而不是首先将第一组匹配为 444 并退出,因为后面的 EEE 不是由 4 个字符组成。那么如何避免最后一组的向左贪婪,所以倒数第二个先消耗。是“?+”

谢谢

最佳答案

使用

boolean foundMatch = subjectString.matches("(\\d{0,3}+)(\\S{4})");

{0,3} 量词后面的额外 + 告诉正则表达式引擎不要回溯到第一组(所谓的 possessive quantifier )。

关于java - 组 REGEX 的向左贪婪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11031594/

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