我在编写这个正则表达式时遇到了很多麻烦:
(?<=\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*|\.)
无限量词,例如*
and )。+
我还尝试以这种方式指定重复范围,但没有运气:
(?<=\s{0,1000}|^\s{0,1000}|\(\s{0,1000}|\.)(?:item|item1|item2)(?=\s+|\s*$|\s*\)|\.)
那么,我怎样才能编写一个相同的正则表达式,即使在 Java 环境中也能工作呢?我不敢相信这种常见情况没有解决方法....