正则表达式替换字符串,但保持其余的行

时间:2016-08-11 14:56:07

标签: regex

我有以下正则表达式我正在匹配:

<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"/>

我应该使用什么替换字符串来实现此目的?我认为它涉及使用$的?

2 个答案:

答案 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);