复杂外观中的无限量词

时间:2012-01-24 21:06:06

标签: java regex lookbehind

我在编写这个正则表达式时遇到了很多麻烦:

(?<=\s+|^\s*|\(\s*|\.)(?:item|item1|item2)(?=\s+|\s*$|\s*\)|\.)

它在我的正则表达式编辑器(Expresso)和.NET环境中运行良好,但在Java环境(使用Eclipse Helios R2的JRE 1.6.0.25)中它不起作用,因为Pattern.compile()方法抛出“语法错误U_REGEX_LOOK_BEHIND_LIMIT”异常。

这是因为模式(?<=\s+|^\s*|\(\s*|\.)背后的外观必须具有已定义的限制(据我所知,此处不允许使用*+等无限量词。

我也尝试以这种方式指定重复范围而没有运气:

(?<=\s{0,1000}|^\s{0,1000}|\(\s{0,1000}|\.)(?:item|item1|item2)(?=\s+|\s*$|\s*\)|\.)

那么,如何编写一个甚至可以在Java环境中运行的相同正则表达式呢? 我无法相信这种常见情况没有解决办法......

0 个答案:

没有答案