我尝试在 Perl[%L10n.msg('
和')%]
Perl之间提取文本,例如,如果我有类似 的代码[%L10n.msg('foo')%]
,我想获取foo。
我有它的工作脚本,正如你在下面看到的那样,但它有问题,并且如你所见,它破坏了编码。
我想知道该脚本有什么问题以及如何修复它。
我的正则表达式脚本:
my (@L10n) = $content_from_file =~ /\[\%L10n\.msg\('(.*)'\)\%\]/g;
$content_from_file:
<div class="detail-trash">
<span class="blog-article-social-net social-net-fb">
<svg class="svg-icon-facebook">
<use xlink:href="[%domain.url_media%]/images/svg-sprite.svg#svg-icon-facebook"></use>
</svg>
[%L10n.msg('Zdielať')%]
</span>
<span class="previews-counter">Počet hodnotení: [%product.rating_votes%]</span>
<a href="#" title="[%L10n.msg('Zobraziť recenzie')%]" class="previews-btn js-previews-btn">[%L10n.msg('Zobraziť recenzie')%]</a>
</div>
当前结果:
Zdiela\x{165}
Zobrazi\x{165} recenzie')%]\" class=\"previews-btn js-previews-btn\">[%L10n.msg('Zobrazi\x{165} recenzie
要求的结果:
Zdielať
Zobraziť recenzie
Zobraziť recenzie
在正则表达式中.*
是贪婪的。这意味着它将尝试匹配最长的字符串。将其更改为.*?
使其不贪婪。然后它将匹配最短的字符串。
my @L10n = $content_from_file =~ /\[%L10n\.msg\('(.*?)'\)%\]/g;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句