Регулярное выражение для удаления всех слов между двумя указанными c словами - PullRequest
0 голосов
/ 09 апреля 2020

Я обычно в порядке с регулярным выражением, но я борюсь с этим.

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

Пример:

start Все в промежутке между статусом

I пытаюсь понять, как удалить (заменить) все, что находится между включением и включением и состоянием

Я уверен, что он работал с этим одновременно

(? i) ^ start . +? status

set (# replaceAll, регулярное выражение $ replace (#textTest, "(? i) ^ start. +? status", ""), "Global")

но он просто больше не работает.

Ответы [ 2 ]

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

Итак, мое оригинальное выражение работает, и поэтому доза Кэри

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

set(#cleanup,$replace(#text2,$new line," "),"Global")
set(#text2,$replace regular expression(#cleanup,"\\bstart\\b.*?\\bstatus\\b",""),"Global")
set(#cleanup,$replace regular expression(#cleanup,"(?i)^start.+?status:",""),"Global")

Извините, но спасибо всем, кто посмотрел и помог:)

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

Вы можете использовать регулярное выражение

\bstart\b.+?\bstatus\b

, которое не требует, чтобы "status" было в той же строке, что и "start". Необходимо установить два флага:

  • безразличный регистр (/i)
  • однострочный режим, который позволяет . соответствовать новой строке (/s)

Демонстрация

Регулярное выражение гласит: "сопоставить" начало "с разрывом слова вперед и назад (например, чтобы избежать совпадения с" началом "или" прыжком ") , затем лениво сопоставьте один или несколько символов, затем сопоставьте «статус» со словами ». Среднее совпадение должно быть ленивым, чтобы механизм регулярных выражений останавливался при следующем (а не последнем) экземпляре «status».

Если используемый механизм регулярных выражений не поддерживает однострочный режим или что-то похожее можно заменить .+ на [\s\S]+.

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