Regex, файл с возвышенным синтаксисом, соответствующий всем после определенного символа, кроме указанной c группы - PullRequest
1 голос
/ 19 апреля 2020

У меня есть новое расширение файла с указанным синтаксисом c, я создал файл с возвышенным синтаксисом и пытаюсь выделить определенные символы в редакторе возвышенного текста.

Предполагается, что следующий текст:

Accept-Language: en-EN
n1.legend=0,1,meta,text,Legend,b1,30 chars max
r1.label=Contain

Я хочу сопоставить все символы после «:» или «=», кроме буквы «b», за которой следуют одно или два числа (например, заполнитель). Я попробовал следующее регулярное выражение:

(?<=[=|:])((?!b[0-9]{1,2}).)*

Это работает, но не соответствует символам после "b1", например, "30 символов максимум", почему это так? любая помощь, пожалуйста? я не эксперт по регулярным выражениям ..

Захват проблемы:

Sublime tes syntax file

", 30 символов макс." быть желтым ..

Ответы [ 2 ]

3 голосов
/ 19 апреля 2020

Чтобы получить только совпадения (и если поддерживается), вы можете использовать \G для получения повторяющихся совпадений и \K для очистки буфера совпадений.

(?:^[^=:\r\n]+[=:]|\G(?!^))(?:b\d{1,2})?\K.*?(?=b\d{1,2}|$)

Объяснение

  • (?: Группа без захвата
    • ^[^=:\r\n]+[=:] Соответствует либо шаблону, начинающему строку
    • | Или
    • \G(?!^) Утверждение положительного в предыдущем матче, а не в начале
  • ) Закрытие группы
  • (?:b\d{1,2})? При желании совпадение b, за которым следуют 2 цифры
  • \K Сброс буфера совпадений
  • .*? Совпадение с любым символом, кроме новой строки, как можно меньше (без жадности)
  • (?=b\d{1,2}|$) Позитивный взгляд вперед, утверждают, что на право это либо b, за которым следуют 2 цифры, либо конец строки

Regex demo

0 голосов
/ 19 апреля 2020

Если из строки 0,1,meta,text,Legend,1,30 chars max вы хотите сопоставить 0,1,meta,text,Legend,,30 chars max, то следующее регулярное выражение должно соответствовать вашим потребностям:

=(.*)b\d{1,2}(.*)

Объединение первой и второй групп совпадений (заменить строку $1$2) дает Вы ваш матч.

RegExr demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...