我有以下正则表达式我正在匹配:
<dataHolder (.)* outId="(finishTime|startTime)" value="java.lang.String"
我想将value的值更改为“java.util.Date”,但保留该行的其余部分。
即
<dataHolder inputId="startTime" name="#FF54A7" type="basicType" outId="finishTime" value="java.lang.String" id="kycPreviousTaskEndTime"/>
应该渲染
<dataHolder inputId="startTime" name="#FF54A7" type="basicType" outId="finishTime" value="java.util.Date" id="kycPreviousTaskEndTime"/>
我应该使用什么替换字符串来实现此目的?我认为它涉及使用$的?
答案 0 :(得分:0)
这是你在Python中的方法:
import re
txt = r'<dataHolder inputId="startTime" name="#FF54A7" type="basicType" outId="finishTime" value="java.lang.String" id="kycPreviousTaskEndTime"/>'
txt2 = re.sub(r'value=".*?"', r'value="java.util.Date" ', txt)
正则表达式比您使用的更简单。
您需要搜索value="
以及文本的其余部分,直到结束引号,然后将其替换为您的内容。
答案 1 :(得分:0)
对于XML的操作,使用DOM API更可靠。例如,JavaScript公开此API如下(但许多其他语言具有类似的接口):
var xml = '<dataHolder inputId="startTime" name="#FF54A7" type="basicType" outId="finishTime" value="java.lang.String" id="kycPreviousTaskEndTime"/>';
var doc = new DOMParser().parseFromString(xml, "text/xml");
doc.querySelector('dataHolder').setAttribute('value', 'java.util.Date');
var xml = new XMLSerializer().serializeToString(doc);
console.log(xml);