正则表达式换行符遇到StackOverflowError

BingBingBong

\\r\\n|\n在Java RegEx中使用它来匹配换行符。我不在乎类似Mac的换行符。每次我运行代码时,都会收到如下所示的StackOverflowError:

java.lang.StackOverflowError
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556)
at java.util.regex.Pattern$Neg.match(Pattern.java:4986)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4615)
at java.util.regex.Pattern$BranchConn.match(Pattern.java:4466)
at java.util.regex.Pattern$Slice.match(Pattern.java:3870)
at java.util.regex.Pattern$Branch.match(Pattern.java:4502)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556)
at java.util.regex.Pattern$Branch.match(Pattern.java:4502)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556)
at java.util.regex.Pattern$Loop.match(Pattern.java:4683)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4615)
at java.util.regex.Pattern$Dollar.match(Pattern.java:3621)
at java.util.regex.Pattern$Curly.match0(Pattern.java:4170)
at java.util.regex.Pattern$Curly.match(Pattern.java:4132)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4615)
at java.util.regex.Pattern$BranchConn.match(Pattern.java:4466)

等等...

如果删除\\r\\n则不会发生错误,因此只有\\n但是结果并不像需要的那样...

请注意,我正在处理多达140k行的大型输入,每场比赛有5-6组,大约有50k比赛。较小的输入按预期工作。使用相同RegEx和相同输入的早期版本也可以正常工作。

提前致谢 ;)

编辑:matcher.find()在while循环中使用访问Java匹配器

威克多·斯特里比尤(WiktorStribiżew)

交替通常会导致堆栈溢出问题(请参阅此答案)。您可以使用以下模式,而不必与可选模式交替使用:

\\r?\\n

在此,\\r?匹配一个或零个CR符号,\\n匹配一个LF符号。

或者,使用通用

\\R

从Java 8开始支持

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式与换行符不匹配

来自分类Dev

正则表达式替换Windows换行符

来自分类Dev

正则表达式换行符

来自分类Dev

用于换行符解析的正则表达式

来自分类Dev

正则表达式包括换行符

来自分类Dev

正则表达式替换Windows换行符

来自分类Dev

正则表达式删除换行符

来自分类Dev

正则表达式包含换行符

来自分类Dev

正则表达式匹配之前删除换行符\换行符

来自分类Dev

正则表达式以匹配单个换行符。正则表达式匹配双换行

来自分类Dev

正则表达式-检查表达式是否以换行符结尾

来自分类Dev

一个或多个空格,制表符或换行符的正则表达式

来自分类Dev

正则表达式以匹配换行符和括号之间的制表符

来自分类Dev

正则表达式可打印的ASCII加上换行符和回车符

来自分类Dev

Java正则表达式匹配无回车符,后跟换行符

来自分类Dev

Python正则表达式替换单个换行符,并忽略两个或多个换行符的序列

来自分类Dev

正则表达式拆分换行符-在比赛结束时保留捕获的换行符

来自分类Dev

正则表达式 - 用两个换行符替换多个换行符并在末尾删除换行符?

来自分类Dev

正则表达式-如何不匹配两个换行符

来自分类Dev

正则表达式在IntellliJ末尾查找没有换行符的文件

来自分类Dev

一个用于列表项和换行符的PHP正则表达式

来自分类Dev

如何在C ++正则表达式中匹配换行符?

来自分类Dev

正则表达式仅返回直到换行符的数字

来自分类Dev

如何使用正则表达式删除未知数量的换行符

来自分类Dev

Python正则表达式-使用许多匹配项来匹配换行符

来自分类Dev

包装单引号并用正则表达式替换换行符

来自分类Dev

正则表达式从字符串中删除换行符

来自分类Dev

使用Python正则表达式按换行符或句点分隔字符串

来自分类Dev

当存在反斜杠\换行符时,使用正则表达式的Mongo查询失败

Related 相关文章

  1. 1

    正则表达式与换行符不匹配

  2. 2

    正则表达式替换Windows换行符

  3. 3

    正则表达式换行符

  4. 4

    用于换行符解析的正则表达式

  5. 5

    正则表达式包括换行符

  6. 6

    正则表达式替换Windows换行符

  7. 7

    正则表达式删除换行符

  8. 8

    正则表达式包含换行符

  9. 9

    正则表达式匹配之前删除换行符\换行符

  10. 10

    正则表达式以匹配单个换行符。正则表达式匹配双换行

  11. 11

    正则表达式-检查表达式是否以换行符结尾

  12. 12

    一个或多个空格,制表符或换行符的正则表达式

  13. 13

    正则表达式以匹配换行符和括号之间的制表符

  14. 14

    正则表达式可打印的ASCII加上换行符和回车符

  15. 15

    Java正则表达式匹配无回车符,后跟换行符

  16. 16

    Python正则表达式替换单个换行符,并忽略两个或多个换行符的序列

  17. 17

    正则表达式拆分换行符-在比赛结束时保留捕获的换行符

  18. 18

    正则表达式 - 用两个换行符替换多个换行符并在末尾删除换行符?

  19. 19

    正则表达式-如何不匹配两个换行符

  20. 20

    正则表达式在IntellliJ末尾查找没有换行符的文件

  21. 21

    一个用于列表项和换行符的PHP正则表达式

  22. 22

    如何在C ++正则表达式中匹配换行符?

  23. 23

    正则表达式仅返回直到换行符的数字

  24. 24

    如何使用正则表达式删除未知数量的换行符

  25. 25

    Python正则表达式-使用许多匹配项来匹配换行符

  26. 26

    包装单引号并用正则表达式替换换行符

  27. 27

    正则表达式从字符串中删除换行符

  28. 28

    使用Python正则表达式按换行符或句点分隔字符串

  29. 29

    当存在反斜杠\换行符时,使用正则表达式的Mongo查询失败

热门标签

归档