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

时间:2010-11-14 06:45:07

标签: regex autohotkey

帮助我如何使用正则表达式替换

下面的参数值
<?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的值为空我想用正则表达式添加一些内容。 或者用param =“something”替换孔param =“”

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

我也使用autohotkey所以..我不知道你是否可以只提供一个用autohotkey编辑xml的代码。 :P但正则表达式会为此做。

有人向我提供了这段代码

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

如果param有一个值,它就可以工作,但如果没有,它就无法工作。 我该如何使它发挥作用。

3 个答案:

答案 0 :(得分:1)

您可以使用类似的内容,但您应该考虑使用正确的XML解析器,因为在许多情况下此正则表达式很容易失败

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

答案 1 :(得分:0)

如果您正在讨论XML / HTML参数,那么在这里查看XML / HTML解析引擎可能会更好。这样的引擎用于解析和修改这种内容 - 正则表达式并不适用于此类工作。

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

答案 2 :(得分:0)

如果您发布的命令按照您的说法工作,那么您需要做的就是将+更改为*,如下所示:

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

+表示“一个或多个; *表示”零或更多“