Re: Replacing Ordinal Suffixes
| От | George Weaver |
|---|---|
| Тема | Re: Replacing Ordinal Suffixes |
| Дата | |
| Msg-id | ECC14AA5966F4EB8BC8F03EE3A59A001@D420 обсуждение исходный текст |
| Ответ на | Replacing Ordinal Suffixes ("George Weaver" <gweaver@shaw.ca>) |
| Ответы |
Re: Replacing Ordinal Suffixes
|
| Список | pgsql-general |
From: Paul Jungwirth
>Try this:
>SELECT REGEXP_REPLACE(LOWER('300 North 126th Street'),
'(\d)(st|nd|rd|th)', '\1', 'g');
Hi Paul,
No luck...
SELECT REGEXP_REPLACE(LOWER('300 North 126th Street'), E'(\d)(st|nd|rd|th)',
E'\1', 'g');
regexp_replace
------------------------
300 north 126th street
(1 row)
>Note that matching a number is \d not /D: backslash, not forward
>slash, and lowercase d not uppercase. \d means a digit, \D means
>anything except a digit.
>Also, I don't think Postgres supports positive lookbehind expressions
>(which are actually (?<=foo), not (?!foo)), but you can get the same
>effect by capturing the number with (\d) and then outputting it again
>with the \1.
>Paul
On Fri, Feb 28, 2014 at 2:04 PM, George Weaver <gweaver@shaw.ca> wrote:
> Hi list,
>
> I'm stumped.
>
> I am trying to use Regexp_Replace to replace ordinal suffixes in addresses
> (eg have '126th' want '126') for comparison purposes. So far no luck.
>
> I have found that
>
> SELECT REGEXP_REPLACE(LOWER('300 North 126th Street'),
> '(?!/D)(st|nd|rd|th)', '', 'g');
> regexp_replace
> ------------------
> 300 nor 126 reet
>
> but
>
> SELECT REGEXP_REPLACE(LOWER('300 North 126th Street'),
> '(?=/D)(st|nd|rd|th)', '', 'g');
> regexp_replace
> ------------------------
> 300 north 126th street
>
> I'm a novice with regular expressions and google hasn't helped much.
>
> Any suggestions?
>
> Thanks,
> George
--
_________________________________
Pulchritudo splendor veritatis.
В списке pgsql-general по дате отправления: