Coder plugin (2)
- Author
- Message
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
Не понимаю почему .coder ругается на правило QuotesRE
Code: Select all
0 `(?<=.*)(abc)` `\1=(0,${STR},0)`
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Вплоть до этого. Это не прихоть и не недочет нашей реализации, это так сказать общая "проблема". Движки регулярок не умеют применять регулярки в обратном порядке, потому Lookbehind-ы должны знать на сколько символов назад отойти и начинать сопоставлять. См. поподробнееDrugmix wrote:И что это означает? Запрет на использование квантификаторов в шаблоне?opk44 wrote:Drugmix
В документации сказано: "Шаблон должен быть фиксированной длины."
-
Offline
- Posts: 124
- Joined: Tue Jun 03, 2008 10:32 pm
Выражение '(?<=.*)(abc)', если бы оно было валидным, выделяло бы только 'abc'. Для примера с грузинскими фамилиями оно выделило бы все фрагменты 'дзе' и 'швили', вне зависимости от того, являются они частью слова или отдельным словом, находятся в начале, середине или конце строки.
В данном случае надежность могла бы быть обусловлена только тем, что фрагменты 'дзе' и 'швили' не встречаются в тексте нигде, кроме окончаний фамилий. Но в этом случае выражение типа 'abc' обладало бы такой же надежностью.
В данном случае надежность могла бы быть обусловлена только тем, что фрагменты 'дзе' и 'швили' не встречаются в тексте нигде, кроме окончаний фамилий. Но в этом случае выражение типа 'abc' обладало бы такой же надежностью.
-
Offline
- Posts: 582
- Joined: Mon Apr 08, 2013 9:50 pm
- Location: Win7SP1x64, APx64
Изначально я хотел попробовать правила, с помощью которых можно было бы реализовать псевдо-каскадность раскраски кода.Xephon wrote:Какой смысл в выражении '(?<=.*)(abc)'?
Последовательность 'abc', перед которой от нуля до бесконечности любых символов, эквивалентна просто 'abc'.
Code: Select all
0 `(?<=^.*,\s*)(abc)(?=.*$)` `\1=(0,${STR},0)`
Но получил ошибку и начал упрощать шаблон по максимуму, чтобы понять что вызывает ошибку.
-
Offline
- Posts: 381
- Joined: Wed Sep 28, 2011 3:05 pm
Тоже проблема с регэкспом в QuotesRE. Это просто пример, чтобы показать ошибку.
Вот такое не работает:
а такое - работает:
Получается, если в первом выражении в негативную ретроспективную проверку включить выбор вида \(|\{, то ошибка. Или может я неправильно записал?
Вот такое не работает:
Code: Select all
0 `(?<!\(|\{)(a)+` `\1=(0,${AREA},0)`
Code: Select all
0 `(?<!\()(a)+` `\1=(0,${AREA},0)`
-
Offline
- Site Admin
- Posts: 6311
- Joined: Thu Jul 06, 2006 7:20 am
Cuprum
В шаблонах фиксированной длины нельзя использовать '|'.
В шаблонах фиксированной длины нельзя использовать '|'.
Code: Select all
0 `(?<![({])(a)+` `\1=(0,${AREA},0)`
-
Offline
- Posts: 381
- Joined: Wed Sep 28, 2011 3:05 pm
Instructor
Понятно. А как тогда быть, если надо проверить альтернативы из нескольких символов, делать несколько проверок?
Понятно. А как тогда быть, если надо проверить альтернативы из нескольких символов, делать несколько проверок?
Code: Select all
(?<!ab)(?<!cd)(текст)