Поддерживаются ли незахватывающие группы (?:...)
В SynWrite редакторе подсвечивается ошибка. Но, возможно, будет работать в CudaText?
Делаю небольшой лексер для очередной ToDo-шки.
Задача выцеплять текст после точки (пробелы кратные 4 обозначил подчеркиваниями):
________DONE.text
________abc.text
Сейчас
(?<=^(\x20{4})*DONE\.).* работает.
(?<=^(\x20{4})*(DONE|abc)).*- не работает. (Т.к. look ahead / behind не поддерживает изменяемую длину. Т.е. нельзя внутри использовать 2 группы).
Я туплю, или есть решение элегантнее, чем объединять просто 2 длинных regexp через ИЛИ
((?<=^(\x20{4})*DONE).* | (?<=^(\x20{4})*abc).*)
Non capturing regex (?:...)
-
main Alexey
- Posts: 2773
- Joined: 25.08.2021 18:15
Re: Non capturing regex (?:...)
у нас два движка regex
- в лексерах. то же что и в лексерах SynWrite. там не работает тогда и тут тоже
- в диалоге поиска - там non-capturing grp вроде бы есть
- в лексерах. то же что и в лексерах SynWrite. там не работает тогда и тут тоже
- в диалоге поиска - там non-capturing grp вроде бы есть
-
main Alexey
- Posts: 2773
- Joined: 25.08.2021 18:15
Re: Non capturing regex (?:...)
решение - обьединить через ИЛИ. или сделать два правила в лексере (еще медленнее видимо).