British National Corpus (BNC) のデータは以下のような形式をしている。
<s n="163"><w NN2>Letters <w VM0>would <w VBI>be <w AJ0>welcome<c PUN>.
文の境界,語の品詞などがタグにより示されるので,単なるテキストから成るものより,詳細な条件を付けて検索することができ,便利である。しかし,タグがあるために,逆に検索が難しくなることもある。このような場合,タグを削除したデータを別に用意し,それを対象に検索を行うと処理が簡単に済む。
下のスクリプトの例では,$_ には手を加えずにタグ部分だけを削除したコピー ($no_tags) を対象に検索を行ない,出力は $_ としている。つまり,検索はタグなしで,出力はタグ付きで行うことになる。
------------------------------------------------------------ while (<>) { $no_tags = $_; #レコードのコピーを作る $no_tags =~ s/<[^>]*>//g; #タグを削除する if($no_tags =~ m/\bso that\b/i){ #検索はタグなしで print $_; #出力はタグ付きで } } ------------------------------------------------------------