Я пытаюсь найти три совпадения в этих строках: Фамилия, Имя и Название. Типичные линии:
- 1SMITH / JOHNMR-AA1
- 1SMITH / JANEMRS-AA2
- 1SMITH / JOHNNY-AA3
Последний не имеет заголовка.
Регулярное выражение, подобное следующему, отлично подойдет для первых двух, но, конечно, не справится с последним:
^1([A-Z]+)\/([A-Z ]+)(?=MRS?)(MRS?)?-(.*)$
Регулярное выражение, подобное следующему, будет обрабатывать последнюю строку, но не первые две:
^1([A-Z]+)\/([A-Z ]+)(?=MRS?|-)(MRS?)?-(.*)$
В этом последнем случае заголовок становится частью первого имени- совпадение, так как я предполагаю, что он смотрит вперед с конца назад, чтобы найти заголовок или da sh (и da sh находится первым). Как я могу изменить шаблон так, чтобы он сначала находил заголовок вместо da sh?