java - 正则表达式替换预定义字符范围之前的所有内容 - Java

标签 java regex string syntax

我有一些字符串值,我想删除或替换“TV|TH”之前的所有内容。我的问题是,尽管使用了正确的语法,但字符串似乎保持不变。

 String test = "10TH";
 String replaceBeforeSide =  test.replaceAll("^\\(TH|TV)+", "");
 System.out.println(replaceBeforeSide);

//期望结果 = "TH";

最佳答案

将我的评论转换为答案,以便 future 的访问者可以轻松找到解决方案。

您可以使用带有捕获组的简单正则表达式:

replaceBeforeSide = test.replaceAll(".+?(TH|TV)", "$1");

或更短:

replaceBeforeSide = test.replaceAll(".+?(T[HV])", "$1");

使用.+?,我们在匹配我们在组 #1 中捕获的 (TH|TV) 之前匹配 1+ 个任何字符(非贪婪)。

在替换过程中,我们只需将 $1 放回去,以便仅删除 (TH|TV) 之前的字符串。

我们还可以使用前瞻并避免捕获组:

replaceBeforeSide = test.replaceAll(".+?(?=T[HV])", "");

如果你想匹配忽略大小写,那么使用内联修饰符(?i):

replaceBeforeSide = test.replaceAll("(?i).+?(?=T[HV])", "");

关于java - 正则表达式替换预定义字符范围之前的所有内容 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63337410/

相关文章:

java - 同步一个特定的 Web 服务调用

java - 将文档插入 MongoDB 中的另一个文档

c++ - 为什么从服务器接收数据会出现段错误(No error in sending)?

R - 如何分割文本和标点符号但有异常(exception)?

c - 为什么以 null 结尾的字符串?或者: null-terminated vs.个字符+长度存储

java - 使用java创建正则表达式以从字符串中提取4位数字

java - 如何创建带有数据库的 .jar?

javascript - RegEx 结果的 "cannot read property ' 长度 ' of null"

javascript - 如何将字符串转换为计算?

java - 为什么在尝试使用 split ("."拆分字符串时打印出一个空数组)