Можно ли ограничить регулярное выражение заданным количеством символов или выполнить два логически связанных теста И в одном регулярном выражении?

мне приходится разбивать таблицу на столбцы.

Тексты в двух соседних столбцах соответствуют выражению (\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) в группе захвата для первого столбца?

1
задан 1 December 2021 в 21:57

0 ответов

Другие вопросы по тегам:

Похожие вопросы: