はじめに
正規表現が苦手なので
基礎を学ぶために時々練習することにしました。
今回は、HTMLのタグを用いて練習します。
問題1
HTML 文字列から、すべての 開始タグ (<タグ名> 形式) を抽出するコード
my $html = <<__HTML;
<head>
<meta charset="utf-8">
<title>TEST! TEST</title>
<meta name="description" content="testtest">
<script src="test.js"></script>
</head>
__HTML
my @tags = ($html =~ /<([a-z]+)[\sa-z\-"\.=]*>/g);
foreach my $tag (@tags){
print '<' . $tag . '>' . "\n";
}
# => 出力結果
<head>
<title>
<meta>
<script>
問題2
HTML 文字列から、属性を含む開始タグ全体 を抽出するコード
my @tags = ($html =~ /<([a-z]+[\sa-z\-"\.=]*)>/g);
foreach my $tag (@tags){
print '<' . $tag . '>' . "\n";
}
# => 出力結果
<head>
<title>
<meta name="description" content="testtest">
<script src="test.js">
問題3
タグとその中身をセットで抽出するコード
my @tags = ($html =~ /(<[a-z]+[\sa-z\-"\.=]*>.*?<\/[a-z]+>)/g);
foreach my $tag (@tags){
print $tag . "\n";
}
=>
<title>TEST! TEST</title>
<script src="test.js"></script>
まとめ
少しずつ練習していこうと思います。