いくつかの基本的な規則と用語です。正規表現のマッチは、単一値の変数である文字列、スカラーで行われます。 の配列の変数は、値のリストを表す項目のコレクションに関連付けられています。おそらく、Perl-variable-typesはperlintro、正規表現はperlretutで始めることができます。
表示されている例では、変数$_
にパターンをチェックする文字列が含まれています。
match演算子は、パターン内の括弧で取り込まれた一致のリストを返します。 /g
修飾子では、動作はより複雑で、正規表現がスカラーで使用されるか、リストコンテキストで使用されるかによって異なります。詳しくはRegexp-Quote-Like-Operators in perlopを参照してください。要するに、配列(当時/g
は必要ありません)
my @matches = $_ =~ /#define\s+(\S+)\s*(.*)/i;
に試合のそのリストを割り当てると、あなたは、配列
if (@matches == 0) {
print "There were no matches\n";
}
elsif (@matches == 1) {
print "Found one match: $matches[0]\n";
}
else {
print "Found more than one: @matches\n";
}
に空をチェックする別の方法を要素の数を確認することができます配列はif (not @matches)
です。
これは、単語\S+
と余分な行.*
をキャプチャします.#define
の前にスペースを入れます。正規表現では、これを文字列のどこにでも置くことができます。実際には、最初に指定しなければならない場合は、先頭にオプションのスペースを入れてアンカーを追加してください。/^\s*.../
@ divesh-rastogi少し更新しました。特に、 '/ g'に関するコメントを改め、説明を追加しました。正規表現もう一度見直したいかもしれません。私は基本を読んでみることをお勧めします - それは全く時間がかかりませんが、人生をはるかに簡単で素敵にするでしょう:)。帰属ありがとうございます。 – zdim