我有正则表达式,它解析模板中使用的 freemarker 宏的所有名称(例如来自<@macroName />
I need only macroName
)。模板通常很大(大约 3 万个字符)。带有正则表达式的 Java 代码如下所示:
Pattern pattern = Pattern.compile(".*?<@(.*?)[ /].*?",
Pattern.DOTALL | Pattern.UNIX_LINES);
Matcher matcher = pattern.matcher(inputText);
while(matcher.find()){
//... some code
}
但有时会发生我得到这个异常:
java.util.regex.Pattern$Curly.match1(Pattern.java:3814)
java.util.regex.Pattern$Curly.match(Pattern.java:3763)
java.util.regex.Pattern$Start.match(Pattern.java:3072)
java.util.regex.Matcher.search(Matcher.java:1116)
java.util.regex.Matcher.find(Matcher.java:552)
...
有人知道为什么会发生这种情况,或者有人可以确定我使用的正则表达式是否优化得很好吗?谢谢你