Погодите. Я правильно понял, вы список аргументов собираете в строку, чтобы её потом парсить регуляркой?
Но зачем?
Что мешает проверить элементы списка на соответствие паттернам без join?
Приведите примеры строк аргументов, которые ждёте на входе и на выходах.
Идея простая: берёшь цифры, буквы, знаки препинания и не забудь пробелы. Расставляешь, как считаешь нужным, читаешь сообщения об ошибках и устраняешь ошибки. Готово!