У меня много проблем с написанием этого регулярного выражения:
(?<=\s+|^\s*|\(\s*|\.)(?:item|item1|item2)(?=\s+|\s*$|\s*\)|\.)
Это очень хорошо работает в моем редакторе регулярных выражений (Expresso) и в среде .NET, но в среде Java (JRE1.6.0.25 с использованием Eclipse Helios R2) он не работает, поскольку метод Pattern.compile()
выдает исключение «Синтаксическая ошибка U_REGEX_LOOK_BEHIND_LIMIT».
Это потому, что шаблон поиска (?<=\s+|^\s*|\(\s*|\.)
должен иметь определенный предел (неограниченные квантификаторы, такие как *
и +
, насколько я знаю, здесь не разрешены).
Iтакже попытался указать диапазон повторений таким образом, но безуспешно:
(?<=\s{0,1000}|^\s{0,1000}|\(\s{0,1000}|\.)(?:item|item1|item2)(?=\s+|\s*$|\s*\)|\.)
Итак, как я могу написать идентичное регулярное выражение, которое работает даже в среде Java?Я не могу поверить, что нет никакого обходного пути для такой общей ситуации ....