使用正则表达式

时间:2018-07-06 19:30:31

标签: java regex xml

我试图构建一个正则表达式,在这里我尝试进行通用搜索并替换xml标记中所有出现的“ @”,并替换为“ _”

之前:-

  <@name>DISCOUNT@MARKETPLACE</@name>
    <@call>313@4445169</@call>
    <address@>31st avenue</@address> 

之后:-

 <name>DISCOUNT@MARKETPLACE</name>
    <call>313@4445169</call>
    <address>31st avenue</address>

1 个答案:

答案 0 :(得分:-1)

捕获在组1中以@开头的标签名称的所有开头字符,在组2中捕获其属性+内容,并使用向后引用匹配该标签结尾,并在不使用@

str = str.replaceAll("<@([^ >]+)(.*?</)@\\1>", "<$1$2$1>");

重要的一点是使用了勉强量词*?,该量词尽可能地匹配 little ,因此不会进行跨越两个名称相同的标签同时捕获了它们和它们之间的所有内容。

此代码已经过测试,并使用问题中的示例通过。我还使用了XML属性对其进行了测试,例如,

<@name foo="@bar">DISCOUNT@MARKETPLACE</@name>

转换为:

<name foo="@bar">DISCOUNT@MARKETPLACE</name>