Регулярное выражение в Powershell для исключения всех новых строк, начинающихся с текста

#regex #powershell

#регулярное выражение #powershell

Вопрос:

У меня есть файл, подобный:

     CF1 mytextmytextmytextmytextmytextmytext
    CF2 mytextmytextmytextmytextmytextmytextmytextmytextmytextmytextmy
    CF3 mytextmytextmytextmytextmytextmytextmytextmytextmytextmytextmytextmytext
    CF4 mytextmytextmytextmextmytextmytextmytextmytextmytextmytextmytextmytextmyt
    mytextmytextmytextmytextmytextmytextmytextmytextmytextmytextmytextmytext
    CF5 mytextmytextmytextmytextmytextmytext
  

Мне нужно удалить новую строку из строки CF4.

Я пытаюсь использовать этот код, но он не удаляет этот разрыв строки:

 $content = [System.IO.File]::ReadAllText( "MyFile.txt" ) 
$content = $content -replace "(`n|`r)?!CF", "CF"    Write-Host $content
  

Комментарии:

1. Попробуйте $content -replace '(?m)r?n(?!s*CF)'

Ответ №1:

Вы можете использовать

 (Get-Content $filepath -Raw) -replace "(?>rn?|n)(?!CF)", "" > $filepathout
  

Смотрите rn?|n)(?!CF)amp;i=CF1 mytextmytextmytextmytextmytextmytext
CF2 mytextmytextmytextmytextmytextmytextmytextmytextmytextmytextmy
CF3 mytextmytextmytextmytextmytextmytextmytextmytextmytextmytextmytextmytext
CF4 mytextmytextmytextmextmytextmytextmytextmytextmytextmytextmytextmytextmyt
mytextmytextmytextmytextmytextmytextmytextmytextmytextmytextmytextmytext
CF5 mytextmytextmytextmytextmytextmytextamp;r=» rel=»nofollow noreferrer»>демонстрацию регулярных выражений
. Подробные сведения:

  • (?>rn?|n) — последовательность окончания строки CRLF, LF или CR
  • (?!CF) — отрицательный прогноз, который не соответствует, если есть CF подстрока непосредственно справа от текущего местоположения.

Перед:

введите описание изображения здесь

После:

введите описание изображения здесь