I finally used the following inelegant version, because the entry string comes from Text Recognition and contains some recognition errors. Said method provides sometimes better result.
public List extract_file_references(String string){
List<String> output = new ArrayList<>();
for(int i=0; i<string.length(); i++) {
if ((Character.toString(string.charAt(i)).equals("B") || Character.toString(string.charAt(i)).equals("M")) && Character.isDigit(string.charAt(i+1)) && Character.isDigit(string.charAt(i+2)) && Character.isDigit(string.charAt(i+3)) && Character.isDigit(string.charAt(i+4)) && Character.isDigit(string.charAt(i+5)) ) {
output.add(string.substring(i, i+6));
} else if (Character.toString(string.charAt(i)).equals("C") && ((Character.toString(string.charAt(i+1)).equals("B"))||Character.toString(string.charAt(i+1)).equals("M")) && Character.isDigit(string.charAt(i+2)) && Character.isDigit(string.charAt(i+3)) && Character.isDigit(string.charAt(i+4)) && Character.isDigit(string.charAt(i+5)) && Character.isDigit(string.charAt(i+6)) ) {
output.add(string.substring(i, i+7));
} else if (Character.toString(string.charAt(i)).equals("L") && ((Character.toString(string.charAt(i+1)).equals("B"))||Character.toString(string.charAt(i+1)).equals("M")) && Character.isDigit(string.charAt(i+2)) && Character.isDigit(string.charAt(i+3)) && Character.isDigit(string.charAt(i+4)) && Character.isDigit(string.charAt(i+5)) && Character.isDigit(string.charAt(i+6))) {
output.add(string.substring(i, i+7));
}
}//fin du for
return output;
}// fin de extract_file_reference