我试图获取文件的名称,而没有最后一个下划线到结尾的部分。

例如,ABC_AA.xml应该是ABCABC_AASD_AD_AA.xml应该是ABC_AASD_AD
我正在考虑将非贪婪与专有^符号一起使用。
我已经试过了:

String nameToSearch = testName.replaceAll("_(^(_).)+\\.xml$", "");

最佳答案

如何使用简单的子字符串代替正则表达式

String nameToSearch = testName.substring(0, testName.lastIndexOf('_'));

或者如果没有_您可以使用
String noSuffix = testName.substring(0, testName.lastIndexOf('.'));//remove ".xml"
String nameToSearch  = noSuffix.substring(0, testName.lastIndexOf('_'));

但是,如果您真的想使用正则表达式,则可以尝试使用
testName.replaceAll("_[^_]*[.]xml$", "");

它将匹配(并删除)具有零个或多个非_字符_并以[^_]*结尾的.xml

如果没有_,可以使用
testName.replaceAll("(_[^_]*)?[.]xml$", "");

09-28 03:18