我在重写的脚本中有以下表达式:$line =~ s/.*[\\\/]//;
这对我说的是:
"\"
或"/"
"/"
这对我来说真的没有意义 - 如果我们要再次用"/"
取代它,为什么我们会匹配"/"
?
答案 0 :(得分:3)
这实际上不是这个表达式的含义,s///
构造是Perl中的substitution operator,其形式如下:
s/pattern/replacement/[modifiers]
所以:
$line =~ s/.*[\\\/]//
实际上意味着,匹配任何字符零次或多次后跟/
或\
并在那里替换任何内容。有效地删除它们。
答案 1 :(得分:2)
这意味着:“匹配斜杠之前的一些文本,并删除斜杠和文本。”s / X / Y /“表示用Y替换X,最后两个斜杠分隔替换组件。”何时使用这种正则表达式的例子是删除目录路径中的目录。
答案 2 :(得分:1)
将其替换为“/”
错误。 s
的模式为s/regex/replacement/
。在这里,regex
是.*[\\\/]
(即在最后/
或\
之前的所有内容),并且`替换为空。它只是删除了比赛。