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

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

阅读 4.3k
2 个回答

试试这个

  • 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, '');
});

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

试试这个

content.replaceAll("<[^>]*>","")
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进