регулярное выражение для разбора тега заголовка HTML - PullRequest
0 голосов
/ 12 апреля 2011

Мне нужно проанализировать множество 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 или сто, то есть файлы 1,2 и 4.

Моя проблема в том, что я не знаю, как писать регулярные выражения

gci "c:\my_folder" | ? {$_.extension -eq ".htm"} | 
select-string -pattern '<title>*100*</title>' |
Select-Object -Unique Path

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

Ответы [ 2 ]

2 голосов
/ 12 апреля 2011

Это должно сделать это.

^.*<title>(.*(100|one\shundred)[^0].*)?</title>.*$
1 голос
/ 12 апреля 2011

попробуйте

<title>(.*[^[:alnum:]])?(100|one hundred)([^[:alnum:]].*)?</title>

для сопоставления с шаблоном.Синтаксис шаблона PCRE (как в Perl), при необходимости его можно переформулировать.

С наилучшими пожеланиями,

Carsten

PS: остерегайтесь ловушек - все рекомендации ипредупреждения из комментариев остаются в силе;тем не менее, в вашем случае подход с использованием регулярных выражений кажется жизнеспособным (в основном потому, что вы исследуете содержимое тега 'title', в файле должен быть только один тег, а его разнесение по нескольким строкам было бы просто глупо imho).

...