38

タグは変数だと思います、そしてそれはチェックして9eafいます-しかしこれはPerlに存在しますか?

ここでの「=〜」記号とは何ですか?また、実行前後の「/」文字は何9eafですか?

if ($tag =~ /9eaf/)
{
    # Do something
}
4

4 に答える 4

47

=~正規表現の一致をテストする演算子です。式/9eaf/は正規表現です(スラッシュ//は区切り文字であり、9eafは実際の正規表現です)。つまり、テストは「変数$tagが正規表現/9eaf / ...と一致する場合」と言っており、この一致は、に格納されている文字列$tagにこれらの文字9eafが任意の時点で順番に連続して含まれている場合に発生します。したがって、これは文字列にも当てはまります

9eaf

xyz9eaf

9eafxyz

xyz9eafxyz

と他の多くの、しかし文字列ではありません

9eaxxx
9xexaxfx

と他の多く。正規表現の詳細については、「perlre」のマニュアルページを参照するか、「perlregularexpression」をグーグルで検索してください。

于 2012-04-04T20:56:45.607 に答える
11

'=〜'演算子は、次の操作が左側のスカラーを検索または変更することを示すバイナリバインディング演算子です。

デフォルトの(指定されていない)演算子は、一致の場合は「m」です。

一致する演算子には、正規表現の開始位置と終了位置を指定する1組の文字があります。最も一般的には、これは'//'です。

PerlReチュートリアルを読んでください。

于 2012-04-04T21:01:39.067 に答える
7

コードは9eaf、がの値の部分文字列であるかどうかをテストしています$tag


$tag =~ /9eaf/

の略です

$tag =~ m/9eaf/

ここm//で、は一致演算子です。これは、正規表現パターン(regexp)を(の左側から返される)によって9eafバインドされた値と照合します。=~=~


m//およびを含む演算子は、 perlop=~で文書化されています。

正規表現(例9eaf)は、perlreperlretutで文書化されています。

于 2012-04-04T21:57:46.407 に答える
3

これは、スカラー$tag(おそらく文字列)が正規表現と一致するかどうかをチェックします。正規表現は、文字列がのサブストリングである/9eaf/かどうかを確認するだけです。チェックアウト。"9eaf"$tagperldoc perlretut

于 2012-04-04T20:56:43.380 に答える