| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Квантификаторы в Look-ahead условиях |
| Автор: serious 6.12.2007, 11:49 | ||||
Условие такого вида работает
, а вот такого
не компилируется (Caused by: java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 18). Объясните, пожалуйста, как учитывать множественные пробелы в условиях? Почему для символьного класса \d можно указать квантификаторы в условии, а для \s нет? |
| Автор: serious 6.12.2007, 14:21 |
| Неужели те, кто работал с регулярными выражениями, не встречались с такой проблемой? |
| Автор: SergeCpp 6.12.2007, 15:40 | ||
| Укажите "obvious maximum length" для квантификатора при Look-behind Для \d она указана: 2 Для \s она не указана: + (что == {1,бесконечность}) Попробуйте вместо \s+ написать \s{1,10} (измените 10 в зависимости от специфики задачи) P.S. Хотя http://www.javaregex.com/RegexRecipesV1.pdf используется +
|
| Автор: SergeCpp 6.12.2007, 16:35 |
| Может быть, возможно как-то по-другому составить выражение, без такой штуки в Look-behind? Ведь Look-behind не всегда же было (да и сейчас не везде есть), как-то обходились Для чего выражение нужно-то? P.S. Джеффри Фридл. "Регулярные выражения" читали? |
| Автор: serious 6.12.2007, 16:42 |
| Чтобы проверить, что перед искомым текстом не идет последовательность \d{2}\s\d{2}, т.е. серия паспорта. Хлтя, я понял что \s+ мне в данном случае не требуется SergeCpp, а я тут уже жуткие вещи начал изобретать |