Используйте RegEx, чтобы удалить все возвраты каретки и переводы строк между двумя строками - PullRequest
1 голос
/ 28 марта 2020

Я пытаюсь сопоставить / найти (для удаления) все экземпляры возврата каретки и перевода строки между двумя строками, которые повторяются в одном и том же файле.

Пример:

Reason for test
Body info random text line 1
Body info random text line 2
Pre-conditions Scenario

some random text in between some random text in between
some random text in between some random text in between

Reason for test
Body info random text line 3 
Body info random text line 4
Body info random text line 5
Pre-conditions Scenario

Хотелось бы для совпадения во всех возвратах каретки и переводах строки между

  • Строка заголовка: " Причина теста "
    и
  • Строка терминатора: " Сценарий предварительных условий"

Число CR и LF , которое я пытаюсь удалить между этими двумя строками, меняется на одно блок параграфа в другой. В приведенном выше примере есть 3 в первом блоке и 4 во втором блоке, и т. Д. c ...

Результат идеально будет

Reason for test Body info random text line 1 Body info random text line 2
Pre-conditions Scenario

some random text in between some random text in between
some random text in between some random text in between

Reason for test Body info random text line 3 Body info random text line 4 Body info random text line 5
Pre-conditions Scenario

Я перепробовал много вариантов, но в итоге застрял со следующим регулярным выражением, используя групповую конструкцию «Позитивный взгляд назад» и «Позитивный взгляд»:

(?<=Reason for test)|$([\r\n])(?=Pre-conditions Scenario)/sgm

Однако этот синтаксис может сопоставлять / находить 2 экземпляров " \ r \ n " для каждого абзаца блока независимо от того, как Есть много строк "Body info" между заголовком и завершающими строками.

Я разместил этот сценарий на сайте инструментов здесь> Пример конструктора RegEX

Спасибо заранее за все ваши отзывы.

1 Ответ

2 голосов
/ 28 марта 2020

Это делает работу:

  • Найти: (Reason for test|\G).*?\K\R(?=(?:(?!Reason for test)[\s\S])*?\RPre-conditions Scenario)
  • Заменить: (пробел)

Демо и объяснение

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