我需要在给定文件名的最后一个下划线之后找到两个字符。
示例字符串:
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
.