(?<=ROWS 参数所用的值.+?\n).+(?=表 DT_\w+:)
以上这条正则在RegEx Tester 工具里面测试是正确的.
String regexStr= "(?<=ROWS 参数所用的值.+?\\n).+(?=表 DT_\\w+:)";
放到java里面执行时则会出现异常:
Exception in thread "main" java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 19
(?<=ROWS 参数所用的值.+?\n).+(?=表 DT_\w+:)
^
现将语句修改为 String regexStr= "(?<=ROWS 参数所用的值.{1,65536}?\\n).+(?=表 DT_\\w+:)";
当然那个65536没事没改那么大就是了,这个该大了效率变低了.
本文探讨了在Java中使用带有不确定长度的look-behind断言时遇到的问题及解决方案。通过调整look-behind的长度限制来解决PatternSyntaxException异常。
367

被折叠的 条评论
为什么被折叠?



