为什么java正则表达式" Look-behind组"需要一个明显的最大长度?

时间:2014-08-09 03:05:11

标签: java regex lookbehind

我知道java正则表达式“Look-behinbd组需要明显的最大长度。” 因此,以下正则表达式将无法在java中正确编译:

"(?<=abc.*)(abc)"  "(?<=abc.*?)(abc)"  "(?<=abc.*+)(abc)"
"(?<=abc.+)(abc)"  "(?<=abc.+?)(abc)"  "(?<=abc.++)(abc)"
"(?<=\1)(abc)"

通常,您需要进行以下更改:

"(?<=abc.{0,30})(abc)"
"(?<=abc.{1,30})(abc)"

似乎“Look-behind group”不能包含catched组(例如:(?<=\1)(abc)),而“Look-ahead gourp”可以包含(例如:(abc)(?=\1))。
也许,Java正则表达式认为被捕获的组没有明显的最大长度。 我不知道如何解决这个问题,使java“Look-behind group”包含catched组。 (我不知道如何为catched组设置明显的最大长度。)

同时,我有点好奇,因为Java-Regex解析的每个输入字符串都是固定长度的字符串,如果用户没有为“Look-behind group”设置明显的最大长度,为什么选择Java -Regex默认不能使用输入字符串的长度作为其最大长度值。

有没有人帮我解决问题?非常感谢!

0 个答案:

没有答案