gpt4 book ai didi

java - 如何获取java字符串中.之前的()之间的值?

转载 作者:行者123 更新时间:2023-11-30 01:45:17 26 4
gpt4 key购买 nike

我必须将文件名 abc(1).jpg 替换为 abc(2).jpg 。这是代码

 String example = "my attachements with some name (56).jpg";
Matcher m = Pattern.compile("\\((\\d{1,}).\\)").matcher(example);
int a = 0;
while(m.find()) {
a=Integer.parseInt(m.group(1));
String p = example.replace(String.valueOf(a), String.valueOf(a+1));
}

它按照给定的用例正常工作。但在 abc(ab)(1)(ab).jpg 的情况下失败,在这种情况下它只是更改为 abc(ab)(2)(ab).jpg 。这不是必需的。那么我如何验证数字括号就在点之前,即

最佳答案

您可以使用

String example = "my attachements with some name (56).jpg";
Matcher m = Pattern.compile("(?<=\\()\\d+(?=\\)\\.)").matcher(example);
example = m.replaceAll(r -> String.valueOf(Integer.parseInt(m.group())+1) );
System.out.println( example );
// => my attachements with some name (57).jpg

请参阅Java demo 。使用的正则表达式是

(?<=\()\d+(?=\)\.)

请参阅regex demo 。很匹配

  • (?<=\() - 紧接 ( 之前的位置
  • \d+ - 然后消耗 1+ 位数字
  • (?=\)\.) - 紧接着是 ).字符序列。

如果您需要告诉正则表达式匹配字符串中最后一个点(最有可能是扩展分隔符)的点,请替换 (?=\)\.)(?=\)\.[^.]*$) 。请参阅this regex demo .

关于java - 如何获取java字符串中.之前的()之间的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58268018/

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