在我的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很新.
你不需要在括号中给出这么多数字.只需使用{8}强制匹配8位数.既然你有/你的字符串,你可以使用不同的分隔符,而不是转义斜杠:
if($file_path =~ m!attachments/(\d{8})!)
{ $number = $1; }
Run Code Online (Sandbox Code Playgroud)
关闭,只需使用(\d{8}),如:
$file_path =~ /attachments\/(\d{8})\b/
Run Code Online (Sandbox Code Playgroud)
还添加\b了它,以便它不会捕获任何更长的数字.