4

Perl と正規表現について初めて学習しているので、これがばかげた質問である場合は申し訳ありません。私はこれに対する答えを自分で見つけようと探してきましたが、何も見つかりません。たぶん、私の問題の一部は、それが何と呼ばれているのか本当にわからないことです.

次のようなコードに出くわしました。

$xl_file = "$curr_dir/$xl_file" unless $xl_file =~ ( m!(^[a-z]:)|[/\\]!i );

=~ 演算子を調べたとき、正規表現の穴に飛び込み、それについて学び始めました。しかし、「m//」マッチング演算子しか見たことがありません。私は「m!」と仮定しています。別の種類の一致演算子ですが、その仕組みを説明する参照が見つかりません。実験を通して、それを使用するときに「!i」が必要であることがわかりましたが、それは私が理解できる程度のものです...

誰かが私にこれを説明してくれますか、またはできる(無料の)資料の方向性を教えてくれませんか?

4

2 に答える 2

6

一致演算子を使用すると、 だけでなく、あらゆる種類の区切り文字を使用できます/

したがって、以下の一致演算子はすべて有効であり、同じタスクを実行します。

m//
m!!
m{}
m##

/また、区切り文字として使用している場合は、最初から削除できることに注意してくださいm。だから、/foo/有効ですが、そうでは!foo!ありません。

于 2013-06-19T20:19:01.697 に答える
4

いいえ、まったく同じことです。Perl では、正規表現の区切り文字を自由に選択できます。あれは、

m/foo/
/foo/
m!foo!
m"foo"
m+foo+
m xfoox
m{foo}

はすべて同じ正規表現です (ただし、疑問符を区切り文字として使用しないでください。古代の悪魔を目覚めさせます)。

終了デリミタの後に、正規表現修飾子が配置されます。修飾子は、/i大文字と小文字を区別しない一致を有効にします。

perlrePerl 正規表現のすべての隠れた要素に飛び込むことができます。しかし、最初は、perlretutより適切なはずです。

于 2013-06-19T20:19:29.730 に答える