6

かなり率直な質問があります。私が働いている場所では、多くの正規表現が使われています。Perl では、テキスト内の一部の文字列を置換および/または削除するために使用されます。

$string=~s/^.+\///;
$string=~s/\.shtml//;
$string=~s/^ph//;

ph最初の置換を行った後、文字列の先頭でのみ置換したい場合があるため、最初と最後の置換を連結できないことを理解しています。ただし、最初と 2 番目の正規表現を交互に$string=~s/(^.+\/|\.shtml)//;組み合わせます。何千ものファイル (+500,000) を処理しているため、どの方法が最も効率的か疑問に思っていました。

4

6 に答える 6

1

まず、実際のデータでさまざまなオプションを測定します。これは、実験に勝る理論はありません (実行できる場合)。CPAN には、役立つタイミング モジュールが多数あります。

第 2 に、正規表現を最適化する場合は、それらを手作業で 1 つの巨大なモンスターに押しつぶすのではなく、コードを使用して「マスター」正規表現を組み立てるようにしてください。そうしないと、誰もコードを解読できなくなります。

于 2016-04-05T08:15:58.510 に答える
-2

2 番目の方法は、1 番目と 2 番目の正規表現を交互に組み合わせる方法が最適です。その方法では、perl が 1 回トラバースし、両方の式をチェックするためです。

perlが両方の式を別々にトラバースする必要がある最初の方法を使用する場合。

したがって、2番目の方法ではループの数が減少しました。

于 2016-04-05T09:29:31.563 に答える