java - 如果不包含在 '<' 和 '>' 之间,如何替换字符串

标签 java android regex string

我必须替换文本的一部分,但前提是它的子字符串不包含在“<”和“>”之间。

例如,如果我有以下文字

<text color='blue'>My jeans are red</text>
<text color='red'>I am wearing a red t-shirt</text>
<text color='yellow'>I like red fruits</text>

我想用另一个词替换单词“red”,如何在不替换“<”和“>”之间的单词的情况下替换该文本中的单词? 我试图为此编写一个正则表达式,但我没有成功...

我认为一个愚蠢的方法是分析所有文本(一个字符一个字符),看看我是在 <...> 的内部还是外部,如果我在外部...我就替换文本的出现认为应该有更聪明的方法!

最佳答案

这对你来说合适吗?

如果您只想在单行中进行替换:

final String s = "<text color='red'>I am wearing a red t-shirt</color>";
        System.out.println(s.replaceAll("(?<=>)(.*?)red", "$1blue"));

将打印

<text color='red'>I am wearing a blue t-shirt</color>

多行大小写:

final String s = "<text color='red'>I am wearing a red t-shirt</color>\n<text color='red'>You are wearing a red T-shirt</color>";
        System.out.println(s.replaceAll("(?m)^(.*?)(?<=>)([^>]*?)red", "$1$2blue"));

输出:

<text color='red'>I am wearing a blue t-shirt</color>
<text color='red'>You are wearing a blue T-shirt</color>

关于java - 如果不包含在 '<' 和 '>' 之间,如何替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14729175/

相关文章:

java - 为什么在 Spring 应用程序中应避免使用 getBean()

java - 文件 io 搜索直到匹配 java

java - 玩!关于 dokku 内存问题的框架(堆对象)

javascript REGex 删除匹配中的单引号

java - 使用正则表达式在双换行符之前删除字符串

java - 使用注释时如何声明 Spring bean autowire-candidate ="false"?

java - 在应用程序运行时处理丢失 SD 卡访问权限

java - 检查用户是否首次使用 Firebase Auth 和数据库登录 Android 应用程序

android - 从android studio的模拟器获取错误图片

java - 正则表达式与前面的精确文本匹配或不匹配