мне приходится разбивать таблицу на столбцы.
Тексты в двух соседних столбцах соответствуют выражению (\S+\s+)+\s*
. Но иногда один столбец становится немного больше, чем должен, и тогда в конце элемента в 1-м столбце есть только один пробел, так что регулярное выражение для первого столбца также захватывает второй. Цифры 1 и 2 в примере обозначают, к какому столбцу принадлежат символы, на самом деле в файле нет этих цифр, например:
111 111 11111 111111 222 2 2222 222 2
11 1 11 11111 2 22 2222 222 2
111 111 11 11 111 1 111 222 2 222 22 2
11 1 11 11111 2 22 2222 222 2
111 111 11111 11111 222 2 2222 222 2
Номинальная ширина первого столбца составляет 20 символов, но если «слово» начинается в их и выходит за пределы столбца 20, он по-прежнему принадлежит первому столбцу вплоть до разделяющего его пробела. См. пример в третьей строке.
Можно ли сделать два теста подряд в одном регулярном выражении: сначала выбрать (в примере) 20 символов, но если 20-й символ отличается от пробела, выбрать (.{19}\ S+\s)
в группе захвата для первого столбца?