文字列内の電子メールを検索する次の正規表現があります (文字列内に 0 個以上の電子メールがある可能性があります)。式には 4 つのグループがあり、そのうちのいくつかは null 値に一致する可能性があります。
([-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})
マッチャーからデータを読み取るコードは、ArrayOutOfBoundsException
at を示しています。matchValue=matcher.group(i);
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;
}
コードに何か問題がありますか、それとも他の何かの副作用ですか?
貴重なご提案をありがとうございました