1

我有一个巨大的字符串,我想匹配以下正则表达式:

"\\s*<?.*?>\\s*<abc>[\\s\\S]*|\\s*<abc>[\\s\\S]*"

如在

myHugeString.matches("\\s*<?.*?>\\s*<abc>[\\s\\S]*|\\s*<abc>[\\s\\S]*"));

字符串很大,所以匹配最后的 [\s\S]* 会占用大量时间。我希望只匹配第一部分(\\s*<?.*?>\\s*<abc>),之后我不关心任何事情。

解决此问题的最有效方法是什么

谢谢

4

1 回答 1

1

您可以在此处使用PatternMatcher类:

示例代码:

Pattern pattern = Pattern.compile("\\s*<?.*?>\\s*<abc>|\\s*<abc>");
Matcher matcher = pattern.matcher(yourString);

if (matcher.find()) {
    // Pattern found.
}

您甚至可以将您的正则表达式模式缩短为:

"(?:\\s*<?.*?>)?\\s*<abc>"
于 2013-08-08T22:26:12.737 回答