更改一些XML标记名称,但在它们之间保留不变的值

时间:2015-02-13 10:49:03

标签: regex xml replace find notepad++

在我的一个XML文件中,我需要使用正则表达式和 Notepad ++ 查找并替换一些开始标记名称。另外,我需要保持它们之间的每个文本保持不变。

示例:

<uri>http://domain-name.com/41874_01_home_big.jpg</image_big>

我需要改成:

<image_big>http://domain-name.com/41874_01_home_big.jpg</image_big>

由于某些原因,我不能只更改 uri 标记,因为文档中还有其他关闭标记,如 / image_small (用 uri打开当然)。

我试图改变它:

<uri>.*?</image_big>

但我不知道应该取代它。 我尝试过:

<image_big>\1</image_big>

但结果是:

<image_big></image_big>

里面没有任何文字。


我需要你的帮助。我对正则表达式并不擅长。

2 个答案:

答案 0 :(得分:2)

只需将.*?放入捕获组。

<uri>(.*?)<\/image_big>

然后将匹配项替换为<image_big>\1</image_big><image_big>$1</image_big>

您的正则表达式<uri>.*?</image_big>正确匹配但是为了获取与.*?模式匹配的所有字符,您必须将该模式放在捕获组中。这样我们就可以反向引用它以供以后使用。

DEMO

答案 1 :(得分:2)

查找:<uri>(.*?)</image_big>

替换:<image_big>\1</image_big><image_big>$1</image_big>

参见演示。

https://www.regex101.com/r/rK5lU1/19