在xml中我们有一些标签,如
<string1 : string2>
还有更多像这样的人。
我需要编写一个正则表达式来删除所有带有“:”的字符串结尾,即这里也是string1和“:”。 它应始终在&lt; &GT;
e.g。输入= <string1 : string2>
output = <string2>
答案 0 :(得分:1)
这是你在php中的方式:
<?php
$str = "<string1 : string2>";
$s = preg_replace('~(</?)[^>:]*:\s*~', "$1", $str);
var_dump($s);
?>
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>
答案 4 :(得分:0)
(?<=<).*?:\s*(?=.*?>)
背后的外观确保<
位于左侧,然后匹配您的字符串,包括:
和可选的空格。以下展望确保标签的其余部分。
捕捉此并用空字符串替换。
你可以在这里看到http://regexr.com
regular-expressions.info/java.html解释了如何在java中应用正则表达式。