我在编写这个正则表达式时遇到了很多麻烦:
(?<=\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环境中运行的相同正则表达式呢? 我无法相信这种常见情况没有解决办法......