Разобрать Markdown, разделенный `#` с шаблоном регулярных выражений - PullRequest
0 голосов
/ 15 января 2019

Я бы хотел разобрать Markdown, который разделен # (одиночный хеш). Я пытался сделать это с Руби.

Ниже кодовых выходов ["# Bob's markdown header 1\n\nsomething here.\n\n", "#", "# kitty's header 1\n\nmeow.\n\n"]

p \
arrayobj = <<-EOS.scan(/^#[^#]*/m)

# Bob's markdown header 1

something here.

## this is markdown header 2

yeah.

# kitty's header 1

meow.

EOS

Однако то, что я хотел, ниже.

["# Bob's markdown header 1\n\nsomething here.\n\n## this is markdown header 2\n\nyeah.\n\n", "# kitty's header 1\n\nmeow.\n\n"]

В таком случае, как вы анализируете уценку?

1 Ответ

0 голосов
/ 15 января 2019

Вы можете сопоставить строку, начинающуюся с #, за которой не следует другая # и любое количество последующих строк, которые не начинаются с такой автономной # char:

.scan(/^#(?!#).*(?:\R(?!#(?!#)).*)*/)

См. Демо Ruby онлайн .

Детали шаблона

  • ^ - начало строки
  • #(?!#) - за # не следует #
  • .* - остаток строки
  • (?:\R(?!#(?!#)).*)* - ноль или более последовательных вхождений:
    • \R(?!#(?!#)) - любая последовательность разрыва строки (используйте \n для старых версий Ruby), за которой не следует отдельная #
    • .* - остаток строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...