Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用正则表达式在现有XML标记中插入元素(字符串)?_Xml_Regex_Tags_Sed_Markup - Fatal编程技术网

使用正则表达式在现有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'