Использование регулярных выражений для разделения строк

Итак, у меня есть такая строка (хэштеги являются разделителями)

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 соответственно.

Другие вопросы по тегам