タグと属性を指定してhtmlファイルやxmlファイルから正規表現で抽出するスクリプトです。
タグは一つだけ指定ができて、属性は好きな数だけ指定できます。
タグ名とその属性が一致するものだけが抽出されます。
大文字と小文字は関係なく抽出されます。
Param([string] $path, [string] $tag, [array] $attr)
#タグの部分を抽出する正規表現
[string] $regString = "<" + $tag + "\s*[^>`"]*"
#属性の部分を抽出する正規表現
if( $attr.Count -gt 0) {
For($i = 0; $i -lt $attr.Count; $i++) {
if($i -eq 0) {
$regString += "(" + $attr[$i] + "\s*=`"[^`"]+`""
} else {
$regString += "|" + $attr[$i] + "\s*=`"[^`"]+`""
}
}
$regString += "|[^>]+)+"
}
$regString += ">"
#$path
#$regString
#正規表現の実行
$result = [regex]::Matches((Get-Content $path), $regString, "IgnoreCase")
$result.Value
実行例は次のような感じです。
.\ExtractTag.ps1 .\readmeForFavoriteLinkChecker.html div class,id,name
