元従業員が書いたスクリプトを調べていて、これに出くわしました。私はそれが何を意味するのか非常に混乱しています。これは、ファイルを実行するifループの状態であり、 $rr 変数が何であるかは知っていますが、その後のすべては、それが何を意味するのかわかりません...明らかに「\ d」をグーグルで検索しても、関連するものは何も返されません...何「.+>」も意味ですか?
if ($line =~ m/($rr)(.+>)(\d.\d+)</) {
修飾子を使用x
して、パターンを説明的にしました。
$line =~ m/
( $rr ) # Match and capture the value of $rr
( .+ > ) # Match and capture everything till the last >
( # Capture the following matches
\d # Match a single digit
. # Match any character a single time
\d+ # Match one or more digits
)
/x;
上記のパターンには 3 つのキャプチャがあります。$1
これらのキャプチャには、特殊変数$2
およびを使用してアクセスできます$3
。
正規表現についてです。
if ($line =~ m/($rr)(.+>)(\d.\d+)
$line
変数です。
この=~
パターンに一致するということですか?
パターンは次のとおりです。m/
これは、変数$rr
、.
(単一の文字)、+
(前の文字に複数回一致)のようなものです。わかり>
ません。The\d
は数字 (つまり、0 から 9) を意味します。
パターン マッチングと正規表現については、http: //en.wikipedia.org/wiki/Regular_expressionを参照してください。
正規表現は、Perl、Ruby などの多くの言語で類似しています。
ここでほとんどの文字列を確認してください (ルビー): http://rubular.com/r/OTe4jFN545
行が $rr variable で始まり、その後に少なくとも 1 つの任意の文字が続き、その後に少なくとも 2 桁の数字が続く正規表現に一致する場合。
よくわかりませんが、括弧が欠落しているようです。
ここに行って正規表現と一致させようとします
http://www.perlfect.com/articles/regextutor.shtml
正規表現は m/($rr)(.+>)(\d.\d+ ですが、この継ぎ目は間違っています /($rr)(.+>)(\d.\d+)/ 継ぎ目の方が優れています。正規表現にはキャプチャもありますif ステートメント内でアクセスできるグループ
$_[0] .. $_[2]