使用正则表达式在现有XML标记中插入元素(字符串)?
在现有标记中插入属性(字符串) 我需要将使用正则表达式在现有XML标记中插入元素(字符串)?,xml,regex,tags,sed,markup,Xml,Regex,Tags,Sed,Markup,在现有标记中插入属性(字符串) 我需要将中的数字插入id=属性中,因此在本例中 我首先说: 1 我需要将其替换为: 1 其中的字符串可以是任何字母数字值 这个正则表达式看起来像什么? 像这样的 /s/1/1\ 我的背太生锈了… 我将regex分隔符从/更改为!少一点困惑) 要转义字符,请使用反斜杠而不是正斜杠 尝试: s!()([0-9]+)()!\1\2\4\3\4\5!我 e、 g: echo'1'|\ sed-r's!()([0-9]+)()!\1\2\4\3\4\5!我 注意-结束
中的数字插入id=
属性中,因此在本例中
我首先说:
1
我需要将其替换为:
1
其中的字符串可以是任何字母数字值
这个正则表达式看起来像什么?
像这样的
/s/1/1\
我的背太生锈了…- 我将regex分隔符从/更改为!少一点困惑)
- 要转义字符,请使用反斜杠而不是正斜杠
s!()([0-9]+)()!\1\2\4\3\4\5!我
e、 g:
echo'1'|\
sed-r's!()([0-9]+)()!\1\2\4\3\4\5!我
注意-结束标记不是通常与
相对吗?事实上,我遗漏了一些引号。。。他们现在在那里…实际上应该是echo'1'\sed-E's!()([0-9]+)()!\1\2\4\3\4\5!g'
表达式已扩展,需要是全局表达式。我已经解决了我的恶梦。再次感谢。啊,你在Mac上(BSD sed有-E
,GNU sed有-r
)。确实如此。我使用的Linux足以让我了解两者的区别。我猜我可以在Mac上安装GNU,对吗?
s!(<pagenum page="normal" id=")([a-z0-9_-]+)(">)([0-9]+)(<pagenum/>)!\1\2\4\3\4\5!i
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'