Я пытаюсь совместить пять подстрок в каждом блоке текста (всего 100 блоков).
Я сопоставляю 99% блоков текста, но с несколькими ошибками в отношении групп 3 и 4.
Вот демонстрационная ссылка: https://regex101.com/r/cW2Is3/4
Группа 3 – «части речи», а группа 4 – английский перевод.
 В первом блоке текста det, pro должны быть в группе 3, а затем the; him, her, it, them  the; him, her, it, them должны быть в группе 4. 
  Такая же проблема возникает и в третьем блоке текста. 
  Группа 3 должна быть adj, det, nm, pro и Group 4 должна быть a, an, one . 
Это моя модель:
 ([0-9]+)\s+(\w+(?:, \w+)?)\s+(\N+?)\s+(\H.+).*?\r?\n•\s+([\s\S]*?)\s+[0-9]+\s\|.*\s* 
        Voici …
 /^(\d+) +(\w+) +([acdefijlmnoprtv()]+(?:, ?[acdefijlmnoprtv()]+)*) +([\S\s]+?)\n\x{2022} +([\S\s]+?)\n\d+ \| [-\dn]+\s*/gum 
Демо-ссылка
Я сделал все возможное, чтобы оптимизировать шаблон. Я побрил почти 10 000 шагов от вашей картины и достиг 100 матчей по желанию.
^ используется для идентификации начала каждого блока (эффективность / точность) \d используется вместо [0-9] (Brevity) \s заменяется буквальным пространством, где это применимо (Brevity) \w для группы захвата 3. (Эффективность) * можно было бы заменить на [\w()] для краткости с потерей эффективности \x{2022} (Личные предпочтения) [-\dn] .  (Эффективность / Точность) Когда вам приходится описывать длинную строку со многими частями, первый рефлекс должен использовать режим свободного пространства (модификатор x) и именованные группы (даже если именованные группы не очень полезны в контексте замены, они помогают сделать шаблон читается и более легко отлаживается):
 ~^ (?<No> [0-9]+ ) \h+ (?<word> \pL+ ) \h+ (?<type> [\pL()]+ (?: , \h* [\pL()]+ )* ) \h+ (?<wd_tr> [^•]* [^•\s] ) \h* \R • \h* (?<sent_fr> [^–]* [^\s–] ) \s* – \s* (?<sent_eng> .* (?:\R .*)*? ) \h* \R (?<num1> [0-9]+ ) \h* \| \h* (?<num2> .*\S ) ~xum 
демонстрация
Не существует волшебного рецепта для построения шаблона для строки с размытым форматом. Все, что вы можете сделать, это быть наиболее суровым в начале и добавлять гибкость, когда вы сталкиваетесь с случаями, которые не совпадают.