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

SS *_*gde 5 regex perl

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

但如果在表达式的开头提到它呢?

例:

if ($_ =~ /-\n/)
//do something
Run Code Online (Sandbox Code Playgroud)

如何解读上面的代码?

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

请帮忙.

Dav*_*son 7

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

这是我发现的更完整的答案

如何将连字符与正则表达式匹配? (看第二个答案)

所以表达式应匹配a - 后跟换行符或以 - 结尾的行 -


Zai*_*aid 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
Run Code Online (Sandbox Code Playgroud)

如果'-'是字符类中的第一个或最后一个字符,则将其视为普通字符.


Hub*_*ast 4

这意味着:

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