【发布时间】:2017-07-01 16:38:22
【问题描述】:
我正在尝试为 HTML 标签制作正则表达式。
到目前为止我创建的正则表达式是<(/?)(\w+?)(\s(.*?))*?((/>)|>),当我在线测试它时,它运行良好;但是当我使用 Java 正则表达式对其进行测试时,它有时会抛出 StackOverFlowError 有时不会。
我正在使用此代码进行测试:
public static void parseHtml(String urlString){
new Thread(new Runnable() {
@Override
public void run() {
int count = 0;
int count2 = 0;
String htmlScript = downloadWebPage(urlString);
Matcher matcher = Pattern.compile("<(/?)(\\w+?)(\\s(.*?))*?((/>)|>)",
Pattern.DOTALL).matcher(htmlScript);
while(matcher.find()) {
System.out.println(matcher.group());
}
}
}).start();
}
所以,我的问题是: 为什么 Java 的正则表达式引擎有时会抛出 StackOverFlowError 有时不会?
注意:我使用了相同的测试输入(相同的 URL),它抛出了错误,稍后再次测试它,它运行良好。
【问题讨论】:
标签: java regex stack-overflow