JDK 1.8 的 java.util.regex.Pattern 中的错误?

实名或句柄

我不小心想出了以下永远运行的程序,而不是打印出真/假结果。这是一个错误吗?我承认运行时间(因为匹配算法的贪婪/不情愿/占有)可能太长(而不是无限)。无论如何,我想引起注意。

String str = "[EXCEPTION] org.jfree.chart.annotations.junit.CategoryTextAnnotationTests.testEquals(org.jfree.chart.annotations.junit.CategoryTextAnnotationTests) false java.lang.NullPointerException [STACKTRACE] org.jfree.chart.annotations.AbstractAnnotation.notifyListeners(AbstractAnnotation.java:145) org.jfree.chart.annotations.AbstractAnnotation.fireAnnotationChanged(AbstractAnnotation.java:129) org.jfree.chart.annotations.CategoryTextAnnotation.setCategoryAnchor(CategoryTextAnnotation.java:157) org.jfree.chart.annotations.junit.CategoryTextAnnotationTests.testEquals(CategoryTextAnnotationTests.java:101) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:606) junit.framework.TestCase.runTest(TestCase.java:176) junit.framework.TestCase.runBare(TestCase.java:141) junit.framework.TestResult$1.protect(TestResult.java:122) junit.framework.TestResult.runProtected(TestResult.java:142) junit.framework.TestResult.run(TestResult.java:125) junit.framework.TestCase.run(TestCase.java:129) junit.framework.TestSuite.runTest(TestSuite.java:252) junit.framework.TestSuite.run(TestSuite.java:247) org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86) org.pitest.junit.adapter.CustomRunnerExecutor.run(CustomRunnerExecutor.java:42) org.pitest.junit.adapter.AdaptedJUnitTestUnit.execute(AdaptedJUnitTestUnit.java:85) org.pitest.mutationtest.execute.MutationTimeoutDecorator$1.run(MutationTimeoutDecorator.java:88) java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) java.util.concurrent.FutureTask.run(FutureTask.java:262) java.lang.Thread.run(Thread.java:745)\nsdas";
System.out.println(str.matches("\\[EXCEPTION\\] (.)* \\[STACKTRACE\\]( (.)*\\((.)*\\))*"));

最后但同样重要的是,请注意前缀“\nsdas”会触发此行为。

斯蒂芬·C

这是一个错误吗?

我不这么认为。我认为这只是由设计不良的正则表达式导致的指数回溯的一个例子。

问题是这种模式。

  ( (.)*\\((.)*\\))*   

特别是(.)*. 他们将匹配任何字符序列,包括'('')'' '如果您将它们更改为,[^() ]*您应该会看到更好的性能。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Gson 错误:私有 java.lang.String java.util.regex.Pattern.pattern 上不允许反射

来自分类Dev

JDK8中java.util.HashSet中未使用的方法

来自分类Dev

JDK8中java.util.HashSet中未使用的方法

来自分类Dev

使用 java.util.regex.Pattern 在 java 中找到类似的 IP

来自分类Dev

JDK8-无法解析类型java.util.Map $ Entry

来自分类Dev

JDK 8-“无法解析类型java.util.Map $ Entry”

来自分类Dev

Java 8中的java.util.logging.FileHandler是否损坏?

来自分类Dev

Java regex for specific pattern

来自分类Dev

java.util.regex.PatternSyntaxException

来自分类Dev

为什么在GlassFish 4.1中建议使用Java 8 JDK?

来自分类Dev

尝试创建URL时Java JDK 8中的MalformedURLException

来自分类Dev

正则表达式变得疯狂:java.util.regex.Pattern Matcher进入了高CPU循环

来自分类Dev

java.util.Scanner中的错误

来自分类Dev

Twitter oAuth,JDK 8和java.security.NoSuchAlgorithmException:算法HmacSHA1不可用

来自分类Dev

java.util.regex.PatternSyntaxException Android

来自分类Dev

java.util.regex的替代品

来自分类Dev

Android Studio 2.2。预览1错误:“请使用JDK 8或更高版本”

来自分类Dev

在ubuntu中安装JDK 8

来自分类Dev

在ubuntu中安装JDK 8

来自分类Dev

jdk8日期转换中的错误?

来自分类Dev

等效于guava Enums.getIfPresent()中的Java 8,它将返回java.util.Optional?

来自分类Dev

在Java 8中将String转换为java.util.Date

来自分类Dev

java8中java.util.stream包的不完整文档

来自分类Dev

java.util.NoSuchElementException错误?

来自分类Dev

java.util.InputMismatchException错误

来自分类Dev

Java.util.Scanner错误

来自分类Dev

需要一个java.util.regex来获取引号中的值

来自分类Dev

线程“主”中的异常java.util.regex.PatternSyntaxException:关闭不匹配

来自分类Dev

使用`lombok`注释和Java JDK 8在内存中编译Java类

Related 相关文章

  1. 1

    Gson 错误:私有 java.lang.String java.util.regex.Pattern.pattern 上不允许反射

  2. 2

    JDK8中java.util.HashSet中未使用的方法

  3. 3

    JDK8中java.util.HashSet中未使用的方法

  4. 4

    使用 java.util.regex.Pattern 在 java 中找到类似的 IP

  5. 5

    JDK8-无法解析类型java.util.Map $ Entry

  6. 6

    JDK 8-“无法解析类型java.util.Map $ Entry”

  7. 7

    Java 8中的java.util.logging.FileHandler是否损坏?

  8. 8

    Java regex for specific pattern

  9. 9

    java.util.regex.PatternSyntaxException

  10. 10

    为什么在GlassFish 4.1中建议使用Java 8 JDK?

  11. 11

    尝试创建URL时Java JDK 8中的MalformedURLException

  12. 12

    正则表达式变得疯狂:java.util.regex.Pattern Matcher进入了高CPU循环

  13. 13

    java.util.Scanner中的错误

  14. 14

    Twitter oAuth,JDK 8和java.security.NoSuchAlgorithmException:算法HmacSHA1不可用

  15. 15

    java.util.regex.PatternSyntaxException Android

  16. 16

    java.util.regex的替代品

  17. 17

    Android Studio 2.2。预览1错误:“请使用JDK 8或更高版本”

  18. 18

    在ubuntu中安装JDK 8

  19. 19

    在ubuntu中安装JDK 8

  20. 20

    jdk8日期转换中的错误?

  21. 21

    等效于guava Enums.getIfPresent()中的Java 8,它将返回java.util.Optional?

  22. 22

    在Java 8中将String转换为java.util.Date

  23. 23

    java8中java.util.stream包的不完整文档

  24. 24

    java.util.NoSuchElementException错误?

  25. 25

    java.util.InputMismatchException错误

  26. 26

    Java.util.Scanner错误

  27. 27

    需要一个java.util.regex来获取引号中的值

  28. 28

    线程“主”中的异常java.util.regex.PatternSyntaxException:关闭不匹配

  29. 29

    使用`lombok`注释和Java JDK 8在内存中编译Java类

热门标签

归档