2017-05-31 16:34 GMT+12:00 David G. Johnston <david.g.johns...@gmail.com>:

> On Tue, May 30, 2017 at 9:17 PM, Patrick B <patrickbake...@gmail.com>
> wrote:
>
>>
>> regexp_matches(name, '((main|medium).name/\d+.\d+)') as filename,
>>
>>
>> Example here: http://sqlfiddle.com/#!15/5f4f0/4
>>
>>    1.  can only get the jpg file name
>>
>> ​Because those are the only two file names consisting of one or more
> numbers, something else, and ending with one or more numbers
>
> I'm pretty sure you mean for the "." in that regex to be "\." so it is
> treated as the period before the extension and not the regex "any" meta
> character.
>
> \d means number, 1-9.  You probably want something like "[\d\w\s]+" to
> match digits, letters (including underscore), and white-space.  Or maybe
> "[^\r\n/\.]+" - specify what it is that won't be in the file name.
>
>>
>>    1. I don't get only the file name but the rest as well, which is not
>>    what I need
>>
>> ​You get more than just "the rest"...you get an array with two entries
> corresponding to the two parenthetical captures (the fiddle apparently
> doesn't display the "{}" that would make this much more obvious).
>
> (regexp_matches​(...))[#]
>
> The above will let you extract only the array position that you specify.
> You will need to add more parens to delimit exactly what you need.
>
> You can use "(?:regex)" instead of normal parens to group without
> capturing.
>
> David J.
>
>

Thanks David! That helped.

See example:
http://dbfiddle.uk/?rdbms=postgres_9.6&fiddle=a74cd219191444f0228b9df581548a37

Will do some more tests but i think that's all i need. Cheers
Patrick

Reply via email to