Вы можете добавить альтернативу .*
, чтобы просто соответствовать строке, если первая альтернатива не совпадает:
^(?:(a);(.*?);(.*?)|.*)$
^^^ ^^^
См. Демонстрационную версию regex
ПРИМЕЧАНИЕ : Если требуется указать только две точки с запятой в строке, вам нужно использовать [^;]*
вместо .*?
:
^(?:(a);([^;]*);([^;]*)|.*)$
См. это демонстрационное выражение regex ( \n
добавлен к отрицательному классу символов в демонстрационной версии, чтобы учесть тот факт, что тест регулярного выражения выполняется для одной многострочной строки, а не для набора отдельных строк).