用Java中的RegExp替换除一个之外的所有标签

时间:2016-12-29 18:14:23

标签: java regex replace

我遇到了以下问题。我想删除所有子字符串< 开头,> 结尾,子字符串 <back>

示例:应删除<apps> <up> <down> <capital> ...,但不应删除<back>

我确信这适用于 RegExp String.replace(),但我不知道如何。

目前,我已经想到了这个:

line = line.replaceAll("<[^<]*>", "");

问题是,还会删除 <back> - 子字符串!

我希望你们中的某个人知道解决方案。

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

您可以使用(?!<back>)<[^<]*>line = line.replaceAll("(?!<back>)<[^<]*>", "");

(?!<back>)(展望未来)与标记<back>

不匹配

RegEx Demo

答案 1 :(得分:3)

使用否定前瞻:

line = line.replaceAll("<(?!back>)[^<>]*>", "");
                         ^^^^^^^^^

请参阅regex demo

模式匹配:

  • < - <符号
  • (?!back>) - back>后面没有(这个负向前瞻,是一个零宽度断言,只检查当前位置右侧的文本,但文本没有被消耗)
  • [^<>]* - 除><以外的零个或多个字符
  • > - >符号。