h = options.output_dir .. string.gsub (h, "^.-([%w_]+%.tex)$", "%1")
Шаблон соответствует любой строке, которая начинается с нуля или более не алфавитно-цифровых символов (т. Е. Пробелов и т. Д.), За которыми следуют один или несколько буквенно-цифровых символов и символов подчеркивания (возможно, имени файла), точка и строка «tex», которая затем заканчивается. Он захватывает имя файла + ".tex" для дальнейшего использования. По сути, он берет имя файла с возможными ненужными символами (пробелами) в начале и заменяет его чистой версией перед тем, как прикрепить выходной каталог к передней части.
Теперь, вероятно, вас смущает то, что .
соответствует любому персонажу. Но при изменении с помощью завершающего -
это означает «самую короткую строку из нуля или более символов перед следующим соответствием», то есть не жадный поиск. Он будет совпадать с любыми символами, найденными в начале строки, до тех пор, пока не найдет что-то, соответствующее составу [%w_]
& ndash; буквенно-цифровой или подчеркивание.