我遇到了以下问题。我想删除所有子字符串,以<
开头,以>
结尾,除子字符串 <back>
。
示例:应删除<apps> <up> <down> <capital> ...
,但不应删除<back>
。
我确信这适用于 RegExp 和String.replace()
,但我不知道如何。
目前,我已经想到了这个:
line = line.replaceAll("<[^<]*>", "");
问题是,还会删除 <back>
- 子字符串!
我希望你们中的某个人知道解决方案。
感谢您的帮助!
答案 0 :(得分:4)
您可以使用(?!<back>)<[^<]*>
,line = line.replaceAll("(?!<back>)<[^<]*>", "");
(?!<back>)
(展望未来)与标记<back>
答案 1 :(得分:3)
使用否定前瞻:
line = line.replaceAll("<(?!back>)[^<>]*>", "");
^^^^^^^^^
请参阅regex demo。
模式匹配:
<
- <
符号(?!back>)
- back>
后面没有(这个负向前瞻,是一个零宽度断言,只检查当前位置右侧的文本,但文本没有被消耗)[^<>]*
- 除>
和<
以外的零个或多个字符>
- >
符号。