Thread: Regexp_replace question / help needed
Hello,
I am running into a problem and need some pointers on regexp_replace - I can't seem to find an answer in any of the online resources.
I have a string (like 40,000 with different length and number of components) of them in a field named "externalurl". I need to replace the final "/" of the string with "&file=" while preserving the filename and extension following the "/".
The closest I can get is:
regexp_replace('http://test.com/test/testfile.php','/[^/]*$','&file=')
however this looses the file name and returns:
What I am looking for is:
as a result.
Would anyone here point me in the right direction?
Thanks!
-Chris
Christopher Molnar <cmolnar@ourworldservices.com> writes: > I have a string (like 40,000 with different length and number of > components) of them in a field named "externalurl". I need to replace the > final "/" of the string with "&file=" while preserving the filename and > extension following the "/". > The closest I can get is: > regexp_replace('http://test.com/test/testfile.php','/[^/]*$','&file=') There's more than one way to do it. You could use capturing parens: regexp_replace('http://test.com/test/testfile.php','/([^/]*)$','&file=\1') or you could use a lookahead constraint: regexp_replace('http://test.com/test/testfile.php','/(?=[^/]*$)','&file=') regards, tom lane
Hi, I guess capture will help you look at http://www.postgresql.org/docs/9.0/static/functions-matching.html SELECT regexp_replace('http://test.com/test/testfile.php', '^(.*)/(.*\.php)$', E'\\1&file=\\2', 'g') 2015-12-09 22:58 GMT+01:00 Christopher Molnar <cmolnar@ourworldservices.com>: > Hello, > > I am running into a problem and need some pointers on regexp_replace - I > can't seem to find an answer in any of the online resources. > > I have a string (like 40,000 with different length and number of components) > of them in a field named "externalurl". I need to replace the final "/" of > the string with "&file=" while preserving the filename and extension > following the "/". > > The closest I can get is: > > regexp_replace('http://test.com/test/testfile.php','/[^/]*$','&file=') > > however this looses the file name and returns: > > http://test.com/test&file= > > What I am looking for is: > > http://test.com/test&file=testfile.php > > as a result. > > Would anyone here point me in the right direction? > > Thanks! > -Chris
Christopher Molnar <cmolnar@ourworldservices.com> writes: > Hello, > > I am running into a problem and need some pointers on regexp_replace - I can't seem to find an answer in any of the onlineresources. > > I have a string (like 40,000 with different length and number of components) of them in a field named "externalurl". Ineed to replace the final "/" of the string with > "&file=" while preserving the filename and extension following the "/". > > The closest I can get is: > > regexp_replace('http://test.com/test/testfile.php','/[^/]*$','&file=')Â > > however this looses the file name and returns: > > http://test.com/test&file= > > What I am looking for is: > > http://test.com/test&file=testfile.php > > as a result. > > Would anyone here point me in the right direction? > select regexp_replace('http://foo/wow/blah/zzz.php', '/([^/]*)$', '&file=\1'); regexp_replace ---------------------------------- http://foo/wow/blah&file=zzz.php (1 row) > > Thanks! > -Chris > -- Jerry Sievers Postgres DBA/Development Consulting e: postgres.consulting@comcast.net p: 312.241.7800
Thank you both. Problem solved - worked perfectly.
On Wed, Dec 9, 2015 at 5:41 PM, Jerry Sievers <gsievers19@comcast.net> wrote:
Christopher Molnar <cmolnar@ourworldservices.com> writes:
> Hello,
>
> I am running into a problem and need some pointers on regexp_replace - I can't seem to find an answer in any of the online resources.
>
> I have a string (like 40,000 with different length and number of components) of them in a field named "externalurl". I need to replace the final "/" of the string with
> "&file=" while preserving the filename and extension following the "/".
>
> The closest I can get is:
>
> regexp_replace('http://test.com/test/testfile.php','/[^/]*$','&file=')
>
> however this looses the file name and returns:
>
> http://test.com/test&file=
>
> What I am looking for is:
>
> http://test.com/test&file=testfile.php
>
> as a result.
>
> Would anyone here point me in the right direction?
> select regexp_replace('http://foo/wow/blah/zzz.php', '/([^/]*)$', '&file=\1');
regexp_replace
----------------------------------
http://foo/wow/blah&file=zzz.php
(1 row)
>
> Thanks!
> -Chris
>
--
Jerry Sievers
Postgres DBA/Development Consulting
e: postgres.consulting@comcast.net
p: 312.241.7800