2015-01-04 5 views
1

Я пытаюсь найти все только имена файлов, без путей, из SQL файла с помощью RegEx. Давайте просто скажем, что я пытаюсь искать и заменять мои результаты, используя Adobe BracketsЗамените функцию. Что будет RegEx, чтобы пойти об этом?RegEx найти и заменить имя файла в файл SQL с помощью Adobe Кронштейны

Файл SQL будет содержать сотни очень длинных линий так:

(493, 179, '_wp_attached_file', '2014/08/The_Image_Name_Here-004.jpg'), 
(494, 179, '_wp_attachment_metadata', 'a:5: 
    {s:5:"width";i:365;s:6:"height";i:205;s:4:"file";s:31:"2014/08/The_Image_Name_Here-004.jpg";s:5:"sizes";a:6: 
    {s:9:"thumbnail";a:4: 
    {s:4:"file";s:31:"The_Image_Name_Here-004-139x100.jpg";s:5:"width";i:139;s:6:"height";i:100;s:9:"mime-type";s:10:"image/jpeg";}s:6:"medium";a:4: 
    {s:4:"file";s:31:"The_Image_Name_Here-004-240x134.jpg";s:5:"width";i:240;s:6:"height";i:134;s:9:"mime-type";s:10:"image/jpeg";}s:15:"featured-medium";a:4: 
    {s:4:"file";s:31:"The_Image_Name_Here-004-230x160.jpg";s:5:"width";i:230;s:6:"height";i:160;s:9:"mime-type";s:10:"image/jpeg";}s:13:"featured-head";a:4: 
    {s:4:"file";s:31:"The_Image_Name_Here-004-365x193.jpg";s:5:"width";i:365;s:6:"height";i:193;s:9:"mime-type";s:10:"image/jpeg";}s:4:"icon";a:4: 
    {s:4:"file";s:29:"The_Image_Name_Here-004-81x87.jpg";s:5:"width";i:81;s:6:"height";i:87;s:9:"mime-type";s:10:"image/jpeg";}s:10:"icon-large";a:4: 
    {s:4:"file";s:31:"The_Image_Name_Here-004-120x131.jpg";s:5:"width";i:120;s:6:"height";i:131;s:9:"mime-type";s:10:"image/jpeg";}}s:10:"image_meta";a:10: 
    {s:8:"aperture";i:0;s:6:"credit";s:0:"";s:6:"camera";s:0:"";s:7:"caption";s:0:"";s:17:"created_timestamp";i:0;s:9:"copyright";s:0:"";s:12:"focal_length";i:0;s:3:"iso";i:0;s:13:"shutter_speed";i:0;s:5:"title";s:0:"";}}' 
), 

Примечание: выше только образец части содержания и первоначально две линии, но разделены на несколько линий для упрощения просмотр

Выражение, которое я попытался это:

/(?=\/|"|').*?(\.jpg)/g 

И я ожидаю, чтобы найти их из вышеприведенного образца:

The_Image_Name_Here-004.jpg 
The_Image_Name_Here-004.jpg 
The_Image_Name_Here-004-139x100.jpg 
The_Image_Name_Here-004-240x134.jpg 
The_Image_Name_Here-004-230x160.jpg 
The_Image_Name_Here-004-365x193.jpg 
The_Image_Name_Here-004-81x87.jpg 
The_Image_Name_Here-004-120x131.jpg 

Но мой результат в конечном итоге, как это:

http://refiddle.com/refiddles/54a94f7075622d09faf30c00

В любом случае я могу получить только filenames(включая расширение)?

+0

На каком языке вы используете? – theonlygusti

+0

Я не уверен, но я думаю, что [** Adobe Brackets **] (http://brackets.io/) использует ** Javascript **. – Giraldi

ответ

1

Если вы используете регулярные выражения с просмотром назад (так, не JavaScript) вы можете использовать это регулярное выражение:

/(?<="|').+\.jpg(?="|')/g 

В противном случае вы можете просто использовать:

/[\w-]+\.jpg/g 

Второй на самом деле, кажется, гораздо больше элегантный для меня, here it is at action.

+0

Это не ** javascript **, так что ** lookbehind ** не будет работать, но второй выполняет эту работу! Ура! – Giraldi

+1

@gmaggio Я думаю, что вы имели в виду: Он * есть * javascript, поэтому lookbehind не будет работать;) – theonlygusti

+0

Упс ... Правильно. Извините ...: P – Giraldi