Java Regex替换命名空间



Regex新手。

有人能告诉我用什么java正则表达式替换代码来替换下面的XML 吗

<?xml version="1.0" encoding="iso-8859-1"?><message xmlns="http://www.origoservices.com">   <m_control xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.origoservices.com"><control_timestamp>2014-09-30T14:39:05.6402</control_timestamp>........</message>

并使其成为

<?xml version="1.0" encoding="iso-8859-1"?><message><control_timestamp>2014-09-30T14:39:05.6402</control_timestamp>........</message>

每次

时,名称空间可能处于不同的位置

您需要在此处使用前瞻。

<message.*?(?=<control_timestamp)

<message> 替换匹配的字符

演示

String src = "<?xml version="1.0" encoding="iso-8859-1"?><message xmlns="http://www.origoservices.com">   <m_control xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.origoservices.com"><control_timestamp>2014-09-30T14:39:05.6402</control_timestamp>........</message>";
String out = src.replaceAll("<message.*?(?=<control_timestamp)", "<message>");
System.out.println(out);

输出:

<?xml version="1.0" encoding="iso-8859-1"?><message><control_timestamp>2014-09-30T14:39:05.6402</control_timestamp>........</message>

您可以用"<message><control_timestamp>"替换"<message.*<control_timestamp>"。那么您的输出就准备好了。

最新更新