5

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

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

例子:

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

如何解释上面的代码?

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

请帮忙。

4

3 回答 3

7

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

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

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

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

于 2012-10-11T06:22:34.847 回答
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

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

于 2012-10-11T06:27:35.480 回答
4

这表示:

如果有一个连字符紧跟一个换行符,则不管这对字符在字符串中的什么位置。

于 2012-10-11T06:24:49.737 回答