gpt4 book ai didi

java - 测试是否存在命名捕获组

转载 作者:行者123 更新时间:2023-12-01 14:47:22 25 4
gpt4 key购买 nike

我有一段代码,它根据用户提供的正则表达式从字符串中提取日期。配置系统的方法有多种,但通常对用户来说最方便的方法是指定一个命名的捕获组,然后代码从中提取日期。例如:

Input: ABC-20130308
Regex: ABC-(?<date>\d{8})

代码非常简单:

Pattern p = Pattern.compile( regex );
Matcher m = p.matcher( input );
m.find();
m.group( "date" );

问题是,当用户未指定命名组时,m.group("date") 会引发 IllegalArguementException。

我可以很容易地捕获此异常并尝试其他方法来获取日期,但这基本上是使用异常来控制流程。在尝试获取该组之前,我更愿意测试该组是否存在。我是否错过了某种检查模式中是否存在命名组的方法?

最佳答案

java.util.regex.Matcher.group(String name)抛出一个

IllegalArgumentException - If there is no capturing group in the pattern with the given name

所以也许你可以使用groupCount()进行基本检查。但我担心您必须处理 IllegalArgumentException

关于java - 测试是否存在命名捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15290250/

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