Использование регулярных выражений для разделения строк
Итак, у меня есть такая строка (хэштеги являются разделителями)
A1###B2###C3###12345.jpg
Мне было интересно, как я могу получить доступ к A1, B2 и C3
STRING1###STRING2###STRING3###STRING4.jpg
SOME###THING###HERE###MEH.jpg
EXTRACT###THIS###PLEASE###pah.jpg
В одном случае я хотел бы извлечь первую строку. В другом втором, в другом третьем. Я буду использовать это с Adobe Bridge для извлечения элементов метаданных из имени файла
Я перебираю каждое имя файла, поэтому потребуется
Var1 = FirstString
Var2 = SecondString
Var3 = ThirdString
2 ответа
[^#]+(?=###)
будет соответствовать всем подстрокам в ваших строках, за которыми следуют ###
>>> s = "STRING1###STRING2###STRING3###STRING4.jpg"
>>> import re
>>> re.findall("[^#]+(?=###)", s)
['STRING1', 'STRING2', 'STRING3']
Или, например, в вашем комментарии:
>>> s = "Slayer###Reading Festival###James###123.jpg"
>>> artist, event, photographer = re.findall("[^#]+(?=###)", s)
>>> artist
'Slayer'
>>> event
'Reading Festival'
>>> photographer
'James'
Предполагая, что Adobe Bridge имеет механизм сценариев на основе ECMAScript, вы можете использовать другое регулярное выражение:
var myregexp = /^([^#]+)###([^#]+)###([^#]+)###/;
var match = myregexp.exec(subject);
if (match != null) {
artist = match[1];
event = match[2];
photographer = match[3];
}
Это будет ваше регулярное выражение:
(A1).*(B2).*(C3).*\.jpg
Это захватит три части, которые вы хотите, игнорируя остальную часть строки.
Чтобы получить доступ к частям, вы просто используете \1,\2\,\3 соответственно.