我有一个巨大的字符串,我想与以下正则表达式匹配:
"\\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>)
,之后我不在乎任何事情。
最有效的方法是什么?
由于
答案 0 :(得分:1)
您可以在此处使用 Pattern 和 Matcher 课程:
Pattern
编译正则表达式来创建Pattern#compile(regex)
对象。 Matcher
在字符串上应用Pattern
对象,创建一个Pattern#matcher(CharSequence)
对象。 Matcher#find()
方法查找您感兴趣的模式。示例代码:
Pattern pattern = Pattern.compile("\\s*<?.*?>\\s*<abc>|\\s*<abc>");
Matcher matcher = pattern.matcher(yourString);
if (matcher.find()) {
// Pattern found.
}
您甚至可以将正则表达式缩短为:
"(?:\\s*<?.*?>)?\\s*<abc>"