解码Perl中的正则表达式

时间:2014-03-17 13:07:21

标签: regex perl

我是Perl的初学者,我正在尝试解码以下正则表达式:

$fname =~ /\/([^\/]+)\.txt$/

有谁能告诉我我们想要在这里匹配什么?

谢谢!

2 个答案:

答案 0 :(得分:5)

以下是你如何分解它。

  • \/ - 文字/
  • (...) - 后跟一个将被捕获到$1的组
    • [ ... ] - 一个角色类
      • ^ - 在字符类中,这意味着接受指定集合的​​反转
      • \/ - 文字/
    • + - 一次或多次
  • \. - 文字.
  • txt - 文字字符串txt
  • $ - 字符串的结尾

因此,换句话说,这是尝试匹配"任何/后跟一个或多个 /的字符,然后是.txt,然后是字符串的结尾,并将.txt之前的部分放入$1"

答案 1 :(得分:3)

\/([^\/]+)\.txt

Regular expression visualization

此正则表达式匹配文件名,因为它存在于路径

  • 减去分机号,
  • 仅当(或开始 )路径以右上斜线开头时。

示例:

\folder\path\file.txt

没有任何匹配。

folder/path/file.txt
匹配

file.txtfile放置在捕获组1中:$1)。

/folder/path/file.txt

同样,file.txt匹配(并且file已匹配)。

你可以try it yourself at Debuggex