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