这个文件包含一行文本:
<p>detached, (disconnected, unfastened</p>
我需要用,
分隔的三个单词包装在<a></a>
标签中,如下所示:
<p><a href="entry://detached">detached</a>, <a href="entry://(disconnected">(disconnected</a>, <a href="entry://unfastened">unfastened</a></p>
当我跑步时
perl -pE'/<p>K.*?(?=</p>)/; @words=split(/, /, $&); $new_string=join ", ", map {qq|<a href="entry://$_">$_</a>|} @words; $_=~s/$&/$new_string/g;' a.txt
它给出以下错误:
无与伦比(在正则表达式中;用
不过,这个确实有效:
perl -pE's{<p>K.*?(?=</p>)}{join ", ", map {qq|<a href="entry://$_">$_</a>|} split(/, /, $&)}eg' a.txt
我不知道为什么,因为基本上在他们背后是同样的想法。第一个如何不能按预期工作?
如果这很重要,我使用的是带有Perl v5.28.1的macOS Catalina。
我同意 Håkon 的观点; 最后的替换是解释此输入流中的括号,而不是找到与之匹配的括号。你不能只打印/发出你的$new_string吗?