したがって、私の Perl スクリプトは基本的に文字列を受け取り、次のように複数の検索と置換を実行してクリーンアップしようとします。
$text =~ s/<[^>]+>/ /g;
$text =~ s/\s+/ /g;
$text =~ s/[\(\{\[]\d+[\(\{\[]/ /g;
$text =~ s/\s+[<>]+\s+/\. /g;
$text =~ s/\s+/ /g;
$text =~ s/\.*\s*[\*|\#]+\s*([A-Z\"])/\. $1/g; # replace . **** Begin or . #### Begin or ) *The
$text =~ s/\.\s*\([^\)]*\) ([A-Z])/\. $1/g; # . (blah blah) S... => . S...
ご覧のとおり、私は厄介な html を扱っており、それを打ち負かして提出する必要があります。
これを行うための、よりシンプルで審美的に魅力的な方法があることを願っています。上記と同じように見える約50行があります。
キーがコメントで、ハッシュが正規表現であるハッシュを使用して、この問題の 1 つのバージョンを解決しました。
%rxcheck = (
'time of day'=>'\d+:\d+',
'starts with capital letters then a capital word'=>'^([A-Z]+\s)+[A-Z][a-z]',
'ends with a single capital letter'=>'\b[A-Z]\.'
}
そして、これが私がそれを使用する方法です:
foreach my $key (keys %rxcheck) {
if($snippet =~ /$rxcheck{ $key }/g){ blah blah }
}
キーが式であり、それを置換したいものを指しているハッシュを試してみると、問題が発生します...そしてその中に$ 1または$ 2があります。
%rxcheck2 = (
'(\w) \"'=>'$1\"'
}
上記はこれを行うことです:
$snippet =~ s/(\w) \"/$1\"/g;
しかし、「$1」の部分を文字通り正規表現に渡すことはできないようです (それは正しい言葉だと思います... ' マークを使用したにもかかわらず、$1 が解釈されているようです)。
if($snippet =~ /$key/$rxcheck2{ $key }/g){ }
そして、それはうまくいきません。
だから2つの質問:
簡単: 多数の正規表現を簡単に編集できる方法で処理して、前に行をカット アンド ペーストするだけでなく、それらを変更および追加できるようにするにはどうすればよいですか?
より難しい:ハッシュ(または、たとえば、1)検索する部分、2)置換3)コメント、4)グローバル/大文字と小文字を区別しない修飾子など、含めたい複数の部分がある場合は配列)を使用してそれらを処理するにはどうすればよいですかそれは実際にこれを行う最も簡単な方法ですか?
ご協力いただきありがとうございます -