正则表达式如何只替换头尾之间的内容

Tbag
  • 20

替换掉以$lt;开始和>结尾的之间的XML的标签,
$lt;>以及不在其中的都保留,
content.replaceAll("<[/]?([ovwxpOVWXP]:\\w+)[^>]*?>", "")会替换所有的标签,
改为content.replaceAll("(?<=$lt;)<[/]?([ovwxpOVWXP]:\\w+)[^>]*?>(?=$gt;)", "")也不行,请问如何能实现?

回复
阅读 2.8k
2 个回答
waterDoge
  • 1.3k
✓ 已被采纳

试试这个

  • java
        String content = "<w:r><w:t>$lt;</w:t></w:r><w:proofErr w:type=\"spellStart\"/><w:r><w:t>aa</w:t></w:r><w:r><w:t>bb</w:t></w:r><w:r w:rsidR=\"00902422\"><w:t>cc</w:t></w:r><w:proofErr w:type=\"spellEnd\"/><w:r w:rsidR=\"00902422\"><w:t>$gt;</w:t></w:r>";
        final Pattern pattern = Pattern.compile("\\$lt;.*?\\$gt;");
        final Matcher matcher = pattern.matcher(content);
        while (matcher.find()) {
            final String group = matcher.group(0);
            final String s = group.replaceAll("<[^>]*>", "");
            content = content.replace(group, s);
        }
        System.out.println(content);
  • js
content.replace(/\$lt;.*?\$gt;/g, function (m) {
    return m.replace(/<[^>]*>/g, '');
});
yuanxiaowa
  • 10.1k

没读懂你要表达什么,能描述清楚点么

试试这个

content.replaceAll("<[^>]*>","")
宣传栏