Удалить все, вплоть до тройного перевода строки - PullRequest
0 голосов
/ 25 февраля 2019

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

У меня есть файл, для которого тройная новая строка (две пустые строки) отмечает границу.Я хочу только все, что идет после границы.

Моя последняя бесплодная попытка выглядит так:

$content = Get-Content -Raw $Path
$content = $content -Replace '^.+`r`n`r`n`r`n', ''

Все мои попытки даже сопоставить одну новую строку потерпели неудачу.Параметр -Raw объясняется тем, что я понял, что это изменит способ обработки символов новой строки, но это ничего не изменило.

Я также знаю, что регулярное выражение не идеально;Я бы хотел, чтобы это было не жадным, но сначала я хочу, чтобы базовый тестовый пример работал, учитывая мое незнакомство с любым видом регулярных выражений, поддерживаемых Powershell.(Я предполагаю, что я могу просто вставить «?» После «+», чтобы исправить это, но обо всем по порядку.)

Цель состоит в том, чтобы перейти от

useless metadata I don't care about
more useless metadata


actual content

к следующему:

actual content

Что я делаю не так?

1 Ответ

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

'`r`n' - это буквенная строка из 4 символов, а "`r`n" - строка из 2 символов.Ваш шаблон не будет соответствовать разрывам строк.Безопаснее использовать \r для сопоставления CR и \n для сопоставления LF в шаблонах регулярных выражений Powershell.

Также обратите внимание, что между началом строки и разделителем есть несколько строк, но .по умолчанию не соответствует символу новой строки, требуется встроенный модификатор (?s), чтобы . также соответствовал символу новой строки.

Использование

$content -replace '(?s)^.*?(?:\r?\n){3}'

Подробности

  • (?s) - опция Singleline, которая делает . совпадением с новыми строками
  • ^ - начало строки
  • .*? - любой 0+ символов, как можно меньше
  • (?:\r?\n){3} - тройной разрыв строки CRLF / LF.

enter image description here

См. .NET regex demo .

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