Регулярное выражение Ruby исключает несколько элементов с положительным взглядом - PullRequest
0 голосов
/ 14 июня 2019

Я бы хотел исключить несколько элементов при использовании положительного взгляда (?=) в Ruby.

Так что мы можем сопоставить символ новой строки (\n), за которым следует все, кроме символа новой строки и элементов уровня блока , допустим, мы хотим сопоставить em и strong, но не ul и li как пример:

\nJuanito
\n<ul>\n    <li>List
\n    </li>
\n    <em>
\n <strong>\n  Fatas!

В настоящее время у меня есть ( Рубуляр требуется \\n для \n):

\\n(?=[^\\n])

, который будет соответствовать всем новым строкам, как показано ниже:

  • \nJuanito
  • \n<ul>
  • \n <li
  • \n </li>
  • \n <em>
  • \n <strong>
  • \n Fatas!

Но я хочу только:

  • \n в \nJuanito
  • \n in \n <em>
  • \n в \n <strong>
  • \n in \n Fatas

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

Также заинтересованы в решении без использования положительного взгляда.

Спасибо.

1 Ответ

1 голос
/ 14 июня 2019

Вы ведете список отклонений и , объединяя их в отрицательный прогноз:

rejects = Regexp.union %w[<ul </ul <li </li]
#⇒ /<ul|<\/ul|<li|<\/li/

input.scan(/\n(?!\n|\s*#{rejects})/)
#⇒ ["\n", "\n", "\n", "\n"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...