Рейтинг:1

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

флаг in

Мне нужно разбить таблицу на столбцы.

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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.