如何使用Regex替换XML标签的参数?

问题描述:

说明如何使用正则表达式来替换下面如何使用Regex替换XML标签的参数?

<?xml version="1.0" encoding="UTF-8" ?> 
<games> 
    <game id="1001" path="C:\Program Files\Warcraft III\war3.exe" param="" display="1" priority="0"/> 
</games> 

参数的时值参数的时为空值我想用正则表达式来添加一些内容。 或用param =“something”替换孔param =“”

它必须是id =“1001” 帮助后的第一个参数。

我也使用autohotkey所以..我不知道你是否可以给我一个代码来编辑xml与autohotkey。 :P,但正则表达式可以做到这一点。

有人给我提供了这个代码

RegExReplace(xml,"s)id=""1001"".*?param=""\K[^""]+","HELLO WORLD!") 

它的工作原理,如果帕拉姆具有价值,但如果它不将无法正常工作。 我如何使它工作。

+0

你未能提供您要修改字符串 – 2010-11-14 06:49:06

+0

你失败,你使用的编程语言(不是所有的正则表达式解析器是等同的)标记这个 – 2010-11-14 06:49:37

+0

什么。如果param =“”在id =“1001”之前会发生? – 2010-11-14 06:50:05

你可以使用这样的事情,但你应该考虑使用适当的XML解析器,而不是,因为这个表达式在很多情况下会很容易失败

s/(id="1001" [^>]*param=").*?"/$1something"/ 

你可能会更好看一个XML/HTML解析引擎,假设你在谈论XML/HTML params。这些引擎用于解析和修改这类内容 - 正则表达式对于这样的工作并不理想。

但是它也有助于更多地了解你在处理什么;环境是什么?这是HTML/XML数据吗?你在哪里修改它? (客户端服务器?)等

如果您发布的作品如你所说的命令,那么所有你需要做的是改变+*,像这样:

RegExReplace(xml,"s)id=""1001"".*?param=""\K[^""]*","HELLO WORLD!") 

+的意思是“一个以上; *意味着“零个或多个”