gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 09:11:39 26 4
gpt4 key购买 nike

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

 String test = "10TH";
String replaceBeforeSide = test.replaceAll("^\\(TH|TV)+", "");
System.out.println(replaceBeforeSide);
//想要的结果 = "TH";

最佳答案

将我的评论转换为答案,以便将来的访问者轻松找到解决方案。
您可以将简单的正则表达式与捕获组一起使用:

replaceBeforeSide = test.replaceAll(".+?(TH|TV)", "$1");
甚至更短:
replaceBeforeSide = test.replaceAll(".+?(T[HV])", "$1");
使用 .+? , 我们在匹配 (TH|TV) 之前匹配任何字符(非贪婪)的 1+我们在第 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com