У меня есть строка, которая может иметь вид:
"filename.first_order.png"
"filename.second_order.png"
"filename.png"
"filename.(jpg|tif|etc)"
Мне нужно сопоставить первую часть строки, содержащую имя, и расширение - однако, если строка является первой / Второй тип заказа, мне нужно сопоставить «first_order» / «second_order» в качестве второй группы, а не «png», и я не могу заставить эти два условия сосуществовать в одной группе захвата. Примеры совпадений:
imageondisk.first_order.png -> [imageondisk, first_order]
anotherfile.png -> [anotherfile, png]
meetingminutes.jpeg -> [meetingminutes, jpeg]
Мне кажется, что я использовал всевозможные комбинации взглядов, взглядов, взглядов, которые должны выглядеть как беспорядочный необразованный беспорядок, но что бы я ни делал, я никогда не смогу получить результат где они не конфликтуют, когда я присоединяюсь к ним вместе - что бы выглядело примерно как
(.+)\.(tif|jpg|<png when not preceded by first/second_order>|<first/second_order, ignoring the .png on the end>)
За исключением того, что я просто спустился в расстроенную кроличью нору групп без захвата и обходных путей, которые, казалось, заканчивались в одном и том же месте и я чувствую, что знал меньше регулярных выражений, чем раньше.
Помощь была бы очень признательна.