我试图将括号内的东西放入img标签中src属性的值:
while(<TOCFILE>)
{
$toc_line = $_;
$toc_line =~ s/<inlineFig.*?(\.\.\/pics\/ch09_inline99_*?\.jpg)*?<\/inlineFig>/<img src="${1}" alt="" \/\>/g;
$new_toc_file .= $toc_line;
}
Run Code Online (Sandbox Code Playgroud)
所以我希望在输出中看到这样的标签:
<img src="../pics/ch09_inline99_00" alt="" />
Run Code Online (Sandbox Code Playgroud)
但相反,我得到:
<img src="" alt="" />
Run Code Online (Sandbox Code Playgroud)
bar*_*art 12
你的正则表达式中有一个错误,因此短语永远不会匹配任何东西:
inline99_*?\.jpg
^^^
Run Code Online (Sandbox Code Playgroud)
我认为你忘了\d在明星面前,从你想要匹配的示例数据来判断.
你甚至没有要求它会匹配,因为你把它放在*?被捕获的组之后.所以,它只是不匹配任何东西.这就是你得到的:没有.
除了:
($PATTERN)*?
Run Code Online (Sandbox Code Playgroud)
只捕捉它匹配的最后一件事.那也许不是你想要的.例如:
$_ = 'one two three';
s/(\w+\s*)*/$1/;
print;
Run Code Online (Sandbox Code Playgroud)
打印"三".