我是Perl的初学者,我正在尝试解码以下正则表达式:
$fname =~ /\/([^\/]+)\.txt$/
有谁能告诉我我们想要在这里匹配什么?
谢谢!
答案 0 :(得分:5)
以下是你如何分解它。
\/
- 文字/
(...)
- 后跟一个将被捕获到$1
的组
[ ... ]
- 一个角色类
^
- 在字符类中,这意味着接受指定集合的反转\/
- 文字/
+
- 一次或多次\.
- 文字.
txt
- 文字字符串txt
$
- 字符串的结尾因此,换句话说,这是尝试匹配"任何/
后跟一个或多个不 /
的字符,然后是.txt
,然后是字符串的结尾,并将.txt
之前的部分放入$1
"
答案 1 :(得分:3)
\/([^\/]+)\.txt
此正则表达式匹配文件名,因为它存在于路径
中示例:
\folder\path\file.txt
没有任何匹配。
folder/path/file.txt
匹配 file.txt
(file
放置在捕获组1中:$1
)。
/folder/path/file.txt
同样,file.txt
匹配(并且file
已匹配)。