正则表达式使用Perl捕获变量中的特定8位字符串

Dav*_*ght 1 regex perl

在我的Perl脚本中,我有一个包含特定文件路径的变量.我需要创建一个正则表达式,可以从该变量中捕获特定的8位数字符串.

$file_path = "/home/attachments/00883227/sample.txt 我想在"附件"之后立即捕获数字串.

我的(不成功)尝试:

if($file_path =~ /attachments\/(\d{1,2,3,4,5,6,7,8}+)/)
    { $number = $1; }
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此脚本时,看起来好像没有存储在$ number变量中.解决方案可能非常简单?请原谅我的无知,我对Perl很新.

Roh*_*ain 5

你不需要在括号中给出这么多数字.只需使用{8}强制匹配8位数.既然你有/你的字符串,你可以使用不同的分隔符,而不是转义斜杠:

if($file_path =~ m!attachments/(\d{8})!)
   { $number = $1; }
Run Code Online (Sandbox Code Playgroud)


Qta*_*tax 5

关闭,只需使用(\d{8}),如:

$file_path =~ /attachments\/(\d{8})\b/
Run Code Online (Sandbox Code Playgroud)

还添加\b了它,以便它不会捕获任何更长的数字.