LINUX.ORG.RU

Regexp для матчинга файлов с запятой

 ,


0

2

Имеется список разделенных запятой имен файлов: Images_MY_fucking images/498579485ddsjfb Mushroom-Head, 1 3 8 inch dia., Illuminated.jpg,498579485ddsjfb Mushroom-Head, 1 3 8 inch dia., Illuminated.tif

Подскажите как составить регулярку чтобы разделить этот список

тут какбы два файла:

Images_MY_fucking images/498579485ddsjfb Mushroom-Head, 1 3 8 inch dia., Illuminated.jpg

498579485ddsjfb Mushroom-Head, 1 3 8 inch dia., Illuminated.tif



Последнее исправление: by_zero (всего исправлений: 2)
Ответ на: комментарий от Patrick13

не канает так как в имени файла запятая и еще есть точка, не могу догнать как регулярку составить

by_zero
() автор топика

Дели по «точка + три символа + запятая». Если возможные «расширения» известны то еще проще.

alozovskoy ★★★★★
()

к файлам в примере подходит .+?\.\w+?,

TDrive ★★★★★
()
Последнее исправление: TDrive (всего исправлений: 1)
Ответ на: комментарий от by_zero

Если в названии файла может быть запятая, то использовать запятую как разделить незя.

С таким же успехом в имени может быть точка следующие символы за которой можно расценить как расширение файла.

-- Всегда ваш капитан

BigAlex ★★★
()
Ответ на: комментарий от BigAlex

Если в названии файла может быть запятая, то использовать запятую как разделить незя.

Два чаю этому господину. Тут уже нужно какое-нибудь экранирование по типу CSV.

theNamelessOne ★★★★★
()
Ответ на: комментарий от xenohunter

/(\.[a-z0-9]{1,4}),/

Сколько будет названий файлов в строке:

«aaa.bbb,aaa,bbbccc.asd.aaa,dsa.asas.sdas,sadsad.sss»

Сделаю небольшую подсказку: какой не был бы ответ - он не правильный.

BigAlex ★★★
()
Последнее исправление: BigAlex (всего исправлений: 2)

Если я правильно понял, вы спрашиваете, как разделить строку не по тем запятым, которые знаки пунктуации в человеческом языке, и за которым соответственно должен идти тот или иной пробел; а по другим. Тогда как-то так:

$ perl -ne 'print join "\n", split /,(?!\s)/' << EOF
> Images_MY_fucking images/498579485ddsjfb Mushroom-Head, 1 3 8 inch dia., Illuminated.jpg,498579485ddsjfb Mushroom-Head, 1 3 8 inch dia., Illuminated.tif
> EOF
Images_MY_fucking images/498579485ddsjfb Mushroom-Head, 1 3 8 inch dia., Illuminated.jpg
498579485ddsjfb Mushroom-Head, 1 3 8 inch dia., Illuminated.tif
Zmicier ★★★★★
()
Последнее исправление: Zmicier (всего исправлений: 1)
Ответ на: комментарий от xenohunter

Это не сработает ни при каких условиях, потому что

1) Как минимум, должно быть /(.*\.[a-z0-9]{1,4}),/, но я допускаю, что ты тут опечатался.

2) Последний элемент никогда не будет отловлен (запятая - разделитель, на конце запятой нет).

3) Не учитывает «жадность»: у тебя всегда будет одно совпадение (от начала и до последней запятой).

Вот тебе задачка - доработай свой регексп с учетом замечаний, что бы оно было хоть теоретически юзабельно.

BigAlex ★★★
()
Последнее исправление: BigAlex (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.