Мне нужно проанализировать множество html-файлов, чтобы узнать, какие из них содержат определенный текст в теге заголовка.
Предположим, что заголовки
file1.htm
<title>100 text other text</title>
file2.htm
<title>text 100 text other text</title>
file3.htm
<title>text 1000 text other text</title>
file4.htm
<title>text one hundred text other text</title>
Следуя моему примеру, мне нужно найти имена файлов, содержащие 100 или 100, то есть файлы 1,2 и 4.
Моя проблема в том, что я не знаю, как писать регулярное выражение
gci "c:\my_folder" | ? {$_.extension -eq ".htm"} |
select-string -pattern '<title>*100*</title>' |
Select-Object -Unique Path
Обратите внимание, если это может быть важно для регулярного выражения, этот тег заголовка находится не в начале строки, а в середине. Заранее спасибо.
title
может занимать несколько строк; они могут содержать другую HTML-разметку. Разметка HTML в целом не подходит для обработки регулярных выражений из-за своей вложенной структуры. Возможно, в этом случае вы точно знаете, как были сделаны ваши входные файлы, и вы знаете, что заголовок всегда находится на одной строке и никогда не содержит ничего сложного. ЕСЛИ это так, то регулярные выражения не могут быть сумасшедшим подходом. В противном случае вам действительно следует использовать правильный парсер. - person Gareth McCaughan   schedule 12.04.2011*
на.*
в шаблоне..
соответствует любому символу.*
означает любое количество вещей, соответствующих тому, что я только что сказал. Итак,.*
означает любое количество произвольных символов. Но, повторяю, внимательно подумайте, действительно ли регулярные выражения подходят для этой работы. - person Gareth McCaughan   schedule 12.04.2011