Pattern eqPattern = Pattern.compile("(.*?)([a-z0-9\_\.]*) eq "(((\\")|[^"])*)"([\s]*.*)", Pattern.CASE_INSENSITIVE);
这是我的正则表达式。当我试图匹配一个长字符串时,我得到了堆栈溢出。图案将与以下内容相匹配column1 eq"abc"和columne"abc";(\\\"(|[^\"](:跳过"在内部"。我想问一下如何重写以防止堆栈溢出。
最好的方法是从正则表达式中删除替换项
可以这样做,它使用展开的循环:
"(.*?)([\w.]*) eq "([^"\\]*(?:\\[\S\s][^"\\]*)*)"(\s*.*)"
原始和扩展
( .*? ) # (1)
( [w.]* ) # (2)
[ ] eq [ ]
"
( # (3 start)
[^"\]*
(?:
\ [Ss]
[^"\]*
)*
) # (3 end)
"
( s* .* ) # (4)