Non capturing regex (?:...)

Post Reply
dimon40001
Posts: 41
Joined: 05.05.2022 18:52

Non capturing regex (?:...)

Post by dimon40001 »

Поддерживаются ли незахватывающие группы (?:...)

В 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).*)
main Alexey
Posts: 2773
Joined: 25.08.2021 18:15

Re: Non capturing regex (?:...)

Post by main Alexey »

у нас два движка regex
- в лексерах. то же что и в лексерах SynWrite. там не работает тогда и тут тоже
- в диалоге поиска - там non-capturing grp вроде бы есть
main Alexey
Posts: 2773
Joined: 25.08.2021 18:15

Re: Non capturing regex (?:...)

Post by main Alexey »

решение - обьединить через ИЛИ. или сделать два правила в лексере (еще медленнее видимо).
Post Reply