java - 替换 < 和 > 的所有实例,但不替换它们之间的文本

标签 java regex

如何提取标签之间的文本?

要获取标签之间的文本,下面的代码可以正常工作,

System.out.println("<text>google<text/>".replaceAll("<[^>]*>", "")); // gives google

我正在尝试对 <> 进行相同的操作。我是否遗漏了以下代码的任何内容?

System.out.println("&lt;aksdk&gt;google&lt;aksdk&gt;".replaceAll("&lt;[^.]*&gt;", "")); 

PS:我不使用它来解析 html。

最佳答案

您需要使用方括号捕获尖括号之间的内容,并通过在替换字符串中使用 $1 引用组 1 将其放回原处:

"&lt;aksdk&gt;google&lt;aksdk&gt;".replaceAll("&lt;([^.]*?)&gt;", "$1")

重要提示:使用 [^.]*?(而不是 [^.]*),因为 [^.]*? > 是非贪婪的,这意味着它不会跳过第一个 > 并与最后一个 > 匹配,这会留下第一个 > 和第二个 < 完好无损 - 不是您想要的。

关于java - 替换 < 和 > 的所有实例,但不替换它们之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18680216/

相关文章:

java - 有没有办法将样式应用于 p :selectManyMenu? 中的列

regex - 不区分大小写地匹配正则表达式,用特定的大小写替换

java - 按 '- ' 拆分包含数字范围的字符串

perl -pe one liner : Replace all matched characters with same number of a different character. 非全局

javascript - 计算 P 中保留非拉丁字符的字符数

java - 将 MYSQL 日期时间值转换为 UTC 时区格式 yyyy-MM-dd'T'HH :mm:ss'Z'

java - java中形式参数的同步

java - 测试方法失败并出现日志错误

java - Hibernate EntityManager findById : javax. ejb.EJBException : java. lang.NullPointerException

regex - 解析简单查询语法