我知道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默认不能使用输入字符串的长度作为其最大长度值。
有没有人帮我解决问题?非常感谢!