2009-07-29 7 views
8

誰かがPerlの正規表現リテラルでセミコロンをエスケープする必要があると私に伝えています。つまり、セミコロンを含む行と一致させるには、/;/ではなく、/\;/を使用する必要があります。Perlの正規表現リテラルでセミコロンをエスケープする必要はありますか?

私が読んだところでは、セミコロンは正規表現のリテラルに特別な意味を持たないので、エスケープする必要はないようです。私はいくつかの実験を行っており、/;/は正常に動作するようです。警告がオンになっており、use strict;プラグマが有効な場合、perlは文句を言わない。

/\;//;/より優れている理由はありますか?これはバージョンに依存しますか?

答えて

1

エスケープする必要はありません。

12

正規表現パターンでセミコロンをエスケープする必要はありません。私がPerlを使用したことはほぼ10年の間にこのような必要性はありませんでした。

perldoc perlrerefには、特殊文字とエスケープシーケンスの簡潔な概要があります。

1

No. /;/は常に問題なく動作します。

3

これはおそらく、コマンドラインでperl one-linersを使用してクォートしないことから開発された習慣なので、 ';'残りを別のコマンドに分割しますか?とにかく、誰もが言うように、必要はありません。

+0

@Jefromi Hmmmm ...それは良い推測のように聞こえる。そのような必要があると誰が思うのか、私は迷っていました。 –

5

おそらく、セミコロンが埋め込まれたセミコロンによって構文の強調表示が混乱するため、セミコロンがエスケープする必要があると思われるかもしれません。私の経験上、ほとんどのエディタはPerlの構文に悩まされています。覚えて、Only perl can parse Perl

+0

@Adam別の良い推測。 –

+1

OTOH、http://search.cpan.org/perldoc/PPI –

+0

について忘れないでください、PPIは素晴らしいようです。そして、それはperlをパースするのがなぜ難しいのかをよく説明した、よく書かれたドキュメントの素晴らしい例です。 –

0

ええ、セミコロンはメタキャラクタではないので、エスケープする必要はありません。

+0

@jejeなぜでしょうか? –

+0

@sinan原因私は答える前にチェックしなかった – jeje

関連する問題