Regex в файле синтаксиса Sublime Text 3, чтобы захватить все после слова, включая переводы строк - PullRequest
0 голосов
/ 20 апреля 2020

Я пишу определение синтаксиса для возвышенного текста 3, где я пытаюсь захватить весь текст, который следует за словом END, включая любые переводы строки. После прочтения поддерживаемых функций регулярных выражений в возвышенном тексте 3: https://raw.githubusercontent.com/kkos/oniguruma/5.9.6/doc/RE я понимаю, что использую (? M) для захвата также новой строки, и (? <= END), чтобы захватить все после слова END . </p>

однако я не могу найти способ объединить эти два, так что я могу захватить весь текст во всех строках после слова END.

edit: это часть синтаксиса file:

contexts:
  main:
    - include: expressions

  expressions:
    - include: comments

  comments:
    - match: (?<=END)(.*)
      scope: comment.block

это работает, но захватывает только до конца строки.

Ответы [ 2 ]

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

Спасибо за подсказку @OdatNurd, я прочитал еще один ваш ответ на другой вопрос, и это помогло мне найти решение: Пользовательский синтаксис в Sublime Text 3

, так что это как я это сделал, я добавил другой контекст, и теперь он работает!

contexts:
  main:
    - include: expressions

  expressions:
    - include: comments

  comments:
    - match: (?<=END)(.*)
      scope: comment.block
      push: end-comment

  end-comment:
    - meta_scope: comment.block 
    - match: (?m)(.*)
      pop: false
0 голосов
/ 20 апреля 2020

Попробуйте это регулярное выражение:

(?si)(?<=END)(.*)

Первые два модификатора указывают:

  1. s: рассматривать все вводные данные как одну строку, сопоставляя символы новой строки с .
  2. i: без учета регистра (удалите это, если вы специально хотите искать заглавную "END")

Пример регулярного выражения: https://regex101.com/r/ToW4Ms/1

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