有人能帮我弄清楚这个正则表达式的碎片吗?

时间:2014-03-03 15:12:42

标签: regex perl

我在重写的脚本中有以下表达式:$line =~ s/.*[\\\/]//;

这对我说的是:

  • 匹配符合"\""/"
  • 的任何字符数
  • 将其替换为"/"

这对我来说真的没有意义 - 如果我们要再次用"/"取代它,为什么我们会匹配"/"

3 个答案:

答案 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.*[\\\/](即在最后/\之前的所有内容),并且`替换为空。它只是删除了比赛。