正则表达式用于查找最后一个下划线之后给定数量的字符



我需要在给定文件名的最后一个下划线之后找到两个字符。

示例字符串:

sample_filename_AB12123321.pdf

我正在使用[^_]*(?=.pdf),但它会像AB12123321一样找到下划线后的所有字符。

我只需要AB找到前两个字符。

而且,没有办法访问代码,我只能修改正则表达式模式。

如果你想使用正则表达式解决问题,你可以使用:

(?<=_)[^_]{2}(?=[^_]*$)

请参阅正则表达式演示。

  • (?<=_)- 下划线必须紧挨出现在当前位置的左侧
  • [^_]{2}- 捕获组 1:下划线以外的任意 2 个字符
  • (?=[^_]*$)- 紧靠当前位置的左侧,必须出现除下划线以外的任何 0+ 字符,然后是字符串的结尾。

请参阅Java演示:

String s = "sample_filename_AB12123321.pdf";
Pattern pattern = Pattern.compile("(?<=_)[^_]{2}(?=[^_]*$)");
Matcher matcher = pattern.matcher(s);
if (matcher.find()){
System.out.println(matcher.group(0)); 
} 

输出:AB.

最新更新