(Извините за плохое название, любое предложение оценило) ;-)Регулярное выражение для соответствия некоторым условиям при форматированном имени файла?
Ну, рассмотрит эти строки:
first = "SC/SCO_160ZA206_T_mlaz_kdiz_nziizjeij.ext"
second = "MLA/SA2_jkj15PO_B_lkazkl lakzlk-akzl.oxt"
third = "A12A/AZD_KZALKZL_F_LKAZ_AZ__azaz___.ixt"
я ищу для регулярного выражения, что позволяет мне получить массивы, как это (в рубин):
first_array = ['SCO', '160ZA206', 'T', 'mlaz_kdiz_nziizjeij']
second_array = ['SA2', 'jkj15PO', 'B', 'lkazkl lakzlk-akzl']
third_array = ['AZD', 'KZALKZL', 'F', 'LKAZ_AZ__azaz___']
первый матч должен быть что-нибудь сразу после /
и перед первым _
Второй матч должен быть чем-то между первым и вторым _
Третий матч должен быть чем-то между вторым и третьим _
Последний матч должен быть чем-то между третьим _
и последним .
Я не могу получить его: [^\/].?([A-Z]*)_(.*)_(.*)[\.$]
:-(
Имеет ли рубин ограниченную ограниченную функцию 'split'? Если да, возьмите подстроку справа от первого/до конца, а затем разделите ее на '_', с тремя группами максимум: элементы массива (если это то, что вызывается в ruby) будут содержать то, что вы хотите. – fge
+1 Приятно видеть вопрос с регулярным выражением, в котором OP приложил некоторые усилия, прежде чем заключить контракт в stackoverflow. – ean5533
@fge: к сожалению, я не могу разбить мою строку, используя '' _'', последнее совпадение может содержать '' _'' , –