gpt4 book ai didi

java - 尝试从正则表达式中的各个组获取数据失败

转载 作者:行者123 更新时间:2023-11-29 05:35:05 24 4
gpt4 key购买 nike

我有以下正则表达式来查找字符串中的电子邮件(字符串中可能有 0 个或多个电子邮件)。表达式有 4 个组,其中一些可以匹配空值:

RegexPlanet Test对于表达式:

          ([-A-Za-z0-9._!#$%^&*|{}'~`]+@[a-z0-9_-]+[\\.][a-z]{2,3}[\\.][a-z]{2,3})|([A-Za-z0-9.!#$%^&*|{}\"~`]+@[a-z0-9_-]+[\\.][a-z]{4})|([A-Z.a-z0-9!#$%^&*|{}'~`]+@[a-z0-9_-]+[\\.][a-z]{3})|([A-Za-z0-9.!#$%^&*_-|{}'~`]+@[a-z0-9_-]+[\\.][a-z]{2})

从匹配器读取数据的代码在 matchValue=matcher.group(i);

处显示了一个 ArrayOutOfBoundsException
   ArrayList<String> result=new ArrayList<String>();
Pattern pattern=Pattern.compile(regex);
Matcher matcher=pattern.matcher(input);
Log.d(TAG,"input: "+input);
while(matcher.find())
{
String matchValue=null;
for(int i=1;i<5;i++)
{
matchValue=matcher.group(i);
if(matchValue!=null && !matchValue.equals(""))
{
Log.d(TAG, "Group no: "+i+" Value: "+matchValue+" adding to result");
result.add(matchValue);
}
else
{
Log.d(TAG, "Nothing matched for group i");
}
}
}
return result;
}

代码有问题还是其他东西的副作用?

提前感谢您的宝贵建议

最佳答案

你知道是什么输入导致了异常吗?通常要避免此异常,您可以将 for 循环重写为:

for(int i=1;i<=matcher.groupCount();i++)
{....}

关于java - 尝试从正则表达式中的各个组获取数据失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19804949/

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