0

元従業員が書いたスクリプトを調べていて、これに出くわしました。私はそれが何を意味するのか非常に混乱しています。これは、ファイルを実行するifループの状態であり、 $rr 変数が何であるかは知っていますが、その後のすべては、それが何を意味するのかわかりません...明らかに「\ d」をグーグルで検索しても、関連するものは何も返されません...何「.+>」も意味ですか?

if ($line =~ m/($rr)(.+>)(\d.\d+)</) {
4

3 に答える 3

8

修飾子を使用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

参考文献

于 2012-08-15T04:24:10.503 に答える
1

正規表現についてです。

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

于 2012-08-15T03:08:34.933 に答える
0

行が $rr variable で始まり、その後に少なくとも 1 つの任意の文字が続き、その後に少なくとも 2 桁の数字が続く正規表現に一致する場合。

よくわかりませんが、括弧が欠落しているようです。

ここに行って正規表現と一致させようとします

http://www.perlfect.com/articles/regextutor.shtml

正規表現は m/($rr)(.+>)(\d.\d+ ですが、この継ぎ目は間違っています /($rr)(.+>)(\d.\d+)/ 継ぎ目の方が優れています。正規表現にはキャプチャもありますif ステートメント内でアクセスできるグループ

$_[0] .. $_[2]
于 2012-08-15T03:46:42.550 に答える