如何使用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!")
它的工作原理,如果帕拉姆具有价值,但如果它不将无法正常工作。 我如何使它工作。
答
你可以使用这样的事情,但你应该考虑使用适当的XML解析器,而不是,因为这个表达式在很多情况下会很容易失败:
s/(id="1001" [^>]*param=").*?"/$1something"/
答
你可能会更好看一个XML/HTML解析引擎,假设你在谈论XML/HTML params。这些引擎用于解析和修改这类内容 - 正则表达式对于这样的工作并不理想。
但是它也有助于更多地了解你在处理什么;环境是什么?这是HTML/XML数据吗?你在哪里修改它? (客户端服务器?)等
答
如果您发布的作品如你所说的命令,那么所有你需要做的是改变+
为*
,像这样:
RegExReplace(xml,"s)id=""1001"".*?param=""\K[^""]*","HELLO WORLD!")
+
的意思是“一个以上; *
意味着“零个或多个”
你未能提供您要修改字符串 – 2010-11-14 06:49:06
你失败,你使用的编程语言(不是所有的正则表达式解析器是等同的)标记这个 – 2010-11-14 06:49:37
什么。如果param =“”在id =“1001”之前会发生? – 2010-11-14 06:50:05