Java正则表达式匹配堆栈溢出


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)

最新更新