$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>
在其中.