Разбить документ на части с использованием регулярного выражения

Читаю документ в массив, из него пытаюсь с помощью регулярного выражения разбить на части и разложить данные в модель City. Читаемый документ выглядит так:

241;Тырныауз;Кабардино-Балкария;Северо-Кавказский;21000;1934
242;Чегем;Кабардино-Балкария;Северо-Кавказский;17988;
243;Багратионовск;Калининградская область;Северо-Западный;6399;1336
244;Балтийск;Калининградская область;Северо-Западный;32670;1626

и проблема в том, что в 242 строке отсутствует 6-й столбик и соответственно при разложении в модель он в 6й столбик кладет 1й столбик следующей строки, выскакивает ошибка OFB Помогите написать регулярку, чтобы она пропускали или нулевое значение ставила полю.

public class Main {
    
    public static void main(String[] args) throws FileNotFoundException {
        
        City city = new City();

        InputStream readFile = new FileInputStream
                ("src/main/resources/readFile/city_ru.csv");
        Scanner sc = new Scanner(readFile);


        while (sc.hasNextLine()) {
            String[] arr = sc.nextLine().split(";");
            System.out.println(Arrays.toString(arr));

                city.setName(arr[1]);
                city.setRegion(arr[2]);
                city.setDistrict(arr[3]);
                city.setPopulation(Integer.valueOf(arr[4]));
                city.setFoundation(arr[5]);
            }

Модель сама

public class City {
  
    private String name;
    private String region;
    private String district;
    private Integer population;
    private String foundation;


Ответы (1 шт):

Автор решения: DronDron

в 6й столбик кладет 1й столбик следующей строки

Не-а. arr[5] вообще не существует. Просто проверяйте длину массива!

city.setFoundation(arr.length >= 6 ? arr[5] : "else");

P.S. метка лишняя. Ими тут и не пахнет)

→ Ссылка