正则表达式的含义if($ _ =〜/ - \ n /)

时间:2012-10-11 06:19:48

标签: regex perl

我是perl脚本的初学者。 我知道连字符( - )用于指定范围。

但如果在表达式的开头提到它会怎么样?

示例:

if ($_ =~ /-\n/)
//do something

如何解释上面的代码?

“如果参数等于换行符的范围”? (不,这是奇怪的理解: - /)

请帮忙。

3 个答案:

答案 0 :(得分:7)

在[]之外 - 意思是“ - ”据我所知,它只表示[]块内的范围。

这是我找到的更完整的答案

How to match hyphens with Regular Expression?(看第二个答案)

因此表达式应匹配a - 后跟换行符或以 -

结尾的行

答案 1 :(得分:5)

该模式将匹配连字符"-",后跟换行符\n

连字符在字符类中被视为范围运算符,如perldoc perlrequick中所述:

  

特殊字符'-'充当角色中的范围运算符   类,以便笨拙的[0123456789][abc...xyz]成为   苗条的[0-9][a-z]

/item[0-9]/;  # matches 'item0' or ... or 'item9'
/[0-9a-fA-F]/;  # matches a hexadecimal digit
     

如果'-'是字符类中的第一个或最后一个字符,那么它就是   作为一个普通人物对待。

答案 2 :(得分:4)

这意味着:

  

如果有一个连字符后面紧跟一个换行符,无论这对字符位于字符串内的哪个位置。