Я пытаюсь прочитать файл и игнорировать все до совпадения символов. Иногда совпадение символов будет отображаться в той же строке с нужными мне результатами, поэтому я не могу указать Select-Object -Skip x
, где x
- количество строк, возвращаемых из документа.
Я пытался используйте метод .Split('<pre>')
для результатов, и это сработало, но я не могу выбрать индекс, потому что это возвращенная многострочная строка.
Ниже приводится начало примера возврата текста. Это ответ HTML, из которого я пытаюсь прочитать данные. Я не могу использовать Content
, так как он находится в ByteArray и имеет пробел между каждым символом. Итак, я пришел к выводу, что пришло время попросить помощи с [Regex]
в PowerShell.
Я смотрел этот ответ и подумал, что могу использовать /.+?(?=abc)/
, заменив строка поиска выглядит так:
(Get-Content $env:TEMP\test.txt) | ForEach-Object {
[Regex]::Match($_, "^.+(?=\<pre\>)").Value
}
Это тоже не сработало. Я в порядке с регулярным выражением, когда ищу совпадение типа {\d\d\d}
, чтобы гарантировать, что оно состоит из 3 цифр, но я не уверен, как его использовать в этом случае.
Это начало возвращаемого файла . Мне нужно игнорировать все, вплоть до символов <pre>
, а затем все, что после этого до конца файла в порядке.
Пример команды и результат, возвращаемый здесь:
PS> Get-Content $env:TEMP\test.txt
HTTP/1.1 200 OK
Content-Length: 3524
Date: Thu, 18 Jun 2020 15:00:05 GMT
Last-Modified: Fri, 19 Jun 2020 01:00:05 GMT
Server: TTWS/1.2 on Microsoft-HTTPAPI/2.0
<!doctype html><html><body>
<p>Test TCP WebServer 1.2</p>
<pre>
Directory: C:\tmp
EDIT:
Теперь у меня есть это, которое удаляет все, включая первый тег <pre>
, а также удаляет закрывающий тег </pre>
, но не удаляет ничего ПОСЛЕ закрывающего тега </pre>
.
(Get-Content $env:TEMP\test.txt -Raw) -replace '(?s)^.*?<pre>' -replace '<\/pre>(.+?)'
Можно ли его развернуть, чтобы включить в конец файла?