【发布时间】:2010-08-01 12:11:43
【问题描述】:
我之前的帖子部分去掉了标签,所以又来了:
我的目标是将尾随 - 的所有实例替换为标签括号内的尾随 +。让我们假设要替换的行如下所示:
<h> aa- aa- </h> <h> ba- ba- </h>
然后应该看起来像
<h> aa+ aa+ </h> <h> ba+ ba+ </h>.
首先我尝试了这个表达式:
s/<h>(.*?)-(.*?)<\/h>/<h>$1+$2<\/h>/g;
产生了这个输出:
<h> aa+ aa- </h> <h> ba+ ba- </h>.
g 选项确实会导致每行多次替换,但仅适用于每个标签括号的第一个实例(并且仅当两个圆括号都包含问号时)。
为了缩小问题的范围,我尝试实现忽略标签的替换。表达式
s/(.*?)-(.*?)/$1+$2/g;
确实会导致预期的结果
<h> aa+ aa+ </h> <h> ba+ ba+ </h>.
当然,这也将替换标记括号之外的内容。
那么我的第一个表达式有什么问题,我怎样才能实现在标签括号内完全替换的目标?
【问题讨论】:
-
如果您实际上没有新问题,请不要发布新问题,请编辑您的原始问题。您应该删除这个新问题。
标签: xml perl replace tags substitution