2016-08-11 9 views
0

の残りの部分を維持する:私は、値の値を「java.util.Date」に変更したい正規表現は、文字列を置換が、私は、私は反対次の正規表現に一致していているライン

<dataHolder (.)* outId="(finishTime|startTime)" value="java.lang.String" 

が、残りを維持しますこの線。文字列を置換何

<dataHolder inputId="startTime" name="#FF54A7" type="basicType" outId="finishTime" value="java.util.Date" id="kycPreviousTaskEndTime"/> 

が、私はこれを達成するために使用すべき

<dataHolder inputId="startTime" name="#FF54A7" type="basicType" outId="finishTime" value="java.lang.String" id="kycPreviousTaskEndTime"/> 

すなわち

をレンダリングするべきか?私はそれが$の使用を伴うと思いますか?

+0

([グループをキャプチャし、バック参照]のHTTPを使用してください。 com/regex-capture.html)。 –

+0

私の問題は、(。*)の代わりに(。*)を使用したことです – IanWatson

+0

アスタリスクの後ろに疑問符を付けて怠け者(貪欲でない)にした方が良いでしょう。ただし、XMLを解析するための正規表現は信頼できません。代わりにDOM APIを使用してください。 – trincot

答えて

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="とそれ以外の文字列を閉じる引用符まで丁寧にしてから、あなたのものに置き換えてください。

0

XMLを操作するには、DOM APIを使用する方が信頼性が高くなります。たとえば、次のようにJavaScriptは、このAPIを公開(ただし、他の多くの言語には似たインターフェースを持っている)://www.rexegg:

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

関連する問題