我是 perl 脚本的初学者。我知道连字符 (-) 用于指定范围。
但是如果在表达式的开头提到它呢?
例子:
if ($_ =~ /-\n/)
//do something
如何解释上面的代码?
“如果参数等于换行符的范围”?(不,这是奇怪的理解:-/)
请帮忙。
在 [] 之外 - 据我所知,表示“-”,它仅表示 [] 块内的范围。
这是我找到的更完整的答案
如何用正则表达式匹配连字符? (看第二个答案)
所以表达式应该匹配一个 - 后跟一个换行符或以 - 结尾的行
该模式将匹配连字符"-"
后跟换行符\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
如果
'-'
是字符类中的第一个或最后一个字符,则将其视为普通字符。
这表示:
如果有一个连字符紧跟一个换行符,则不管这对字符在字符串中的什么位置。