Шаблон регулярных выражений для всех символов и пробелов до двойного разрыва строки - PullRequest
0 голосов
/ 07 февраля 2019

Со следующим текстом:

** First Header
------------------------------------------------------------

(https://www.stackoverflow.com) Stack Overflow

Description: Stack Overflow

Google (https://www.google.com)

Description: Google


** Second Header

... как я могу использовать шаблон регулярного выражения, который совпадает до второго заголовка с двойным разрывом строки, поэтому вывод будет выглядеть так:

** First Header
------------------------------------------------------------

(https://www.stackoverflow.com) Stack Overflow

Description: Stack Overflow

Google (https://www.google.com)

Description: Google

Со следующим регулярным выражением (сопоставление первого заголовка со всеми символами, а также символами пробела, отсюда использование \s и \S с последующими литералами регулярного выражения и отрицательный взгляд на разрыв двух строк)Я чувствую, что я определенно на правильном пути:

RegExp("\\*\\* First Header[\\s\\S]*?(\\r?\\n(?!\\r?\\n))")

... но только вывод:

** First Header

Ответы [ 3 ]

0 голосов
/ 07 февраля 2019

Решением может быть:

RegEx("(\\*\\*[\\s\\S]*)(\\n\\n\\*\\*)")

извлечение первой группы.

Пример вы можете увидеть в https://regex101.com/r/WPN83b/1

0 голосов
/ 07 февраля 2019

Вы можете использовать

/(\*\* First Header[\s\S]*?)(?:\r?\n){3}/

или совместим только с регулярным выражением JS

/(\*\* First Header[^]*?)(?:\r?\n){3}/

См. Демонстрационную версию регулярного выражения

Подробнее

  • (\*\* First Header[\s\S]*?) - захват группы 1:
    • \*\* First Header - буквальная ** First Header подстрока
    • [\s\S]*? - любые 0+ символов, как можно меньше
  • (?:\r?\n){3} - три варианта необязательного CR с последующими LF-символами (таким образом, действующие две пустые строки).
0 голосов
/ 07 февраля 2019

Будет работать следующее регулярное выражение:

/\*[^]+?(?=\s+\*)/

или

RegExp("\\*[^]+?(?=\\s+\\*)")

И это самый короткий путь.

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