使用RegEX在现有XML标记中插入元素(字符串)?

时间:2012-03-05 02:51:08

标签: xml regex tags sed markup

在现有标签中插入属性(字符串)。

我需要将<pagenum><pagenum/>中找到的号码插入id=属性,因此在此示例中。

我从:

开始

<pagenum page="normal" id="page">1<pagenum/>

我需要将其替换为:

<pagenum page="normal" id="page1">1<pagenum/>

那里的字符串可以是任何字母数字值。

这个正则表达式是什么样的? 像这样的东西?

/s/<pagenum page="normal" id="page">1<pagenum//>/<pagenum page="normal" id="page"{Value}>1\<pagenum/>

我的反引用太生锈了......

1 个答案:

答案 0 :(得分:2)

  • 我从/更改了正则表达式分隔符!
  • 转义使用反斜杠而不是正斜杠的字符

尝试:

s!(<pagenum page="normal" id=")([a-z0-9_-]+)(">)([0-9]+)(<pagenum/>)!\1\2\4\3\4\5!i

e.g:

echo '<pagenum page="normal" id="page">1<pagenum/>' | \
sed -r 's!(<pagenum page="normal" id=")([a-z0-9_-]+)(">)([0-9]+)(<pagenum/>)!\1\2\4\3\4\5!i'

注意 - 通常</pagenum><pagenum/>相比不是结束标记?