我需要在给定文件名的最后一个下划线之后找到两个字符。
示例字符串:
sample_filename_AB12123321.pdf
我正在使用[^_]*(?=\.pdf)
,但它会找到下划线之后的所有字符,例如AB12123321
.
我只需要找到前两个字符AB
。
而且,没有办法访问代码,我只能修改正则表达式模式。
我需要在给定文件名的最后一个下划线之后找到两个字符。
示例字符串:
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
。