Java存储在数组中匹配

时间:2017-09-16 23:08:31

标签: java

您好,我想将我的匹配项存储在我的数组中,但不断出现nullpointer或out of bounds的错误。

    final  String mcontentURI[] = new String[count];
    for (int i = 0; i < count; i++) {
        Pattern p = Pattern.compile("src=\"(.*?)\"");
        Matcher m = p.matcher(content_val);
        if (m.find()) {
            mcontentURI[i] = (m.group(i+1));


        }
    }

1 个答案:

答案 0 :(得分:1)

由于您不断重新编译相同的正则表达式,因此组编号将保持不变。但是,您可以将它放在数组的不同索引处:

final String mcontentURI[] = new String[count];
final Pattern p = Pattern.compile("src=\"(.*?)\"");
for (int i = 0; i < count; i++) {
    Matcher m = p.matcher(content_val); // Use different strings here
    if (m.find()) {
        mcontentURI[i] = m.group(1);
    }
}

请注意,对于模式不匹配的索引,mcontentURI[i]将保留null

如果要搜索相同的字符串,请执行以下操作:

final String mcontentURI[] = new String[count];
final Pattern p = Pattern.compile("src=\"(.*?)\"");
Matcher m = p.matcher(content_val);
int i = 0;
while (i < count && m.find()) {
    mcontentURI[i++] = m.group(1);
}