正则表达式删除字符串中的给定模式

时间:2011-05-11 13:45:03

标签: java regex

在xml中我们有一些标签,如

<string1 : string2>

还有更多像这样的人。

我需要编写一个正则表达式来删除所有带有“:”的字符串结尾,即这里也是string1和“:”。 它应始终在&lt; &GT;

e.g。输入= <string1 : string2>

output = <string2>

5 个答案:

答案 0 :(得分:1)

这是你在php中的方式:

<?php
 $str = "<string1 : string2>";
 $s = preg_replace('~(</?)[^>:]*:\s*~', "$1", $str);
 var_dump($s);
?>

EDIT in Java

String str = "<ns2:senderId xmlns=\"netapp.com/fsoCanonical\">NetApp</ns2:senderId>";
System.out.println(str.replaceAll("(</?)[^>:]*:\\s*", "$1"));

<强>输出

<senderId xmlns="netapp.com/fsoCanonical">NetApp</senderId>

答案 1 :(得分:0)

<.*?:\s*(.*?)>应仅捕获您感兴趣的部分。如何进行正则表达式替换可能因编程语言而异。

在java中你可以做到

string.replaceAll("<.*?:\s*(.*?)>", "<$1>");

答案 2 :(得分:0)

<[^>:]*:\s*([^>]*)>

使用<$1>搜索并替换。

答案 3 :(得分:0)

使用xslt解析器,您可以使用

<xsl:template match="*">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>
<xsl:template match="@*|text()|comment()|processing-instruction()">
    <xsl:copy-of select="."/>
</xsl:template>

This link is relevant for your question.

答案 4 :(得分:0)

(?<=<).*?:\s*(?=.*?>)

背后的外观确保<位于左侧,然后匹配您的字符串,包括:和可选的空格。以下展望确保标签的其余部分。

捕捉此并用空字符串替换。

你可以在这里看到http://regexr.com

regular-expressions.info/java.html解释了如何在java中应用正则表达式。