$a = "<no> 3232 </no> "
$a =~ s/<no>(.*)</no>/000/gi ;
Run Code Online (Sandbox Code Playgroud)
我期待那$a变成了"<no> 000 </no> ",但它不起作用.
dax*_*xim 10
你需要环顾四周的断言.
$a =~ s|(?<=<no> ).*(?= </no>)|000|gi;
# $a is now "<no> 000 </no> "
Run Code Online (Sandbox Code Playgroud)
你考虑过读一两本Perl书吗?如果你必须通过阅读精美的文档来提出可以轻松回答的那类问题,那么你就无法有效地学习.
您可以放弃花哨的前瞻或外观断言,并提出一个稍长的正则表达式:
$str =~ s|<no>.*?</no>|<no>000</no>|gi;
Run Code Online (Sandbox Code Playgroud)
这可能是更容易一些阅读,但它是在你更换小幅反直觉<no>whatever</no>与<no>000</no>,即你不只是更换的东西<no></no>,你要更换整个字符串与恰好到另一个字符串拥有<no>并且</no>在其中.