“if($ line = ~m /($ rr)(。+>)(\ d。\ d +)”是什么意思?

时间:2012-08-15 02:56:07

标签: string perl

我正在浏览一位前员工写的脚本,并发现了这一点。我很困惑这意味着什么。这是一个if循环的条件,它贯穿一个文件,我知道$ rr变量是什么,但之后的一切我都不知道它意味着什么......显然谷歌搜索“\ d”没有任何相关的内容......什么是“。+>”意思也是?

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

3 个答案:

答案 0 :(得分: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;

上述模式中有三个捕获。可以使用特殊变量$1$2$3访问这些捕获。

参考

答案 1 :(得分:1)

这是关于正则表达式。

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

$line是一个变量 =~表示是否与此模式匹配?
模式如下。它类似于m/,然后是变量$rr,然后是.(单个字符),+(多次匹配前一个字符)。 >我不确定。 \d表示一个数字(即0到9)。

在此处阅读模式匹配和正则表达式:http://en.wikipedia.org/wiki/Regular_expression

正则表达式在许多语言中类似,例如Perl,Ruby等。

在这里查看大部分字符串(红宝石):http://rubular.com/r/OTe4jFN545

答案 2 :(得分:0)

如果line匹配以$ rr变量开头的正则表达式,后跟至少一个后跟至少两位数的字符。

我怎么不确定,但它缺少了一个副手。

我会尝试去匹配正则表达式

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

正则表达式是m /($ rr)(。+&gt;)(\ d。\ d +但是这个接缝错误/($rr)(.+>)(\d.\d+)/接缝更好。 正则表达式还有可以在if语句中使用

访问的捕获组
$_[0] .. $_[2]