| From: | "Peter J(dot) Holzer" <hjp-pgsql(at)hjp(dot)at> | 
|---|---|
| To: | pgsql-general(at)lists(dot)postgresql(dot)org | 
| Subject: | Re: Detecting repeated phrase in a string | 
| Date: | 2021-12-09 13:35:10 | 
| Message-ID: | 20211209133510.lkn6vjh5eqpi5csg@hjp.at | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-general | 
On 2021-12-09 12:38:15 +0000, Shaozhong SHI wrote:
> Does anyone know how to detect repeated phrase in a string?
Use regular expressions with backreferences:
bayes=> select regexp_match('foo wikiwiki bar', '(.+)\1');
╔══════════════╗
║ regexp_match ║
╟──────────────╢
║ {o}          ║
╚══════════════╝
(1 row)
"o" is repeated in "foo".
bayes=> select regexp_match('fo wikiwiki bar', '(.+)\1');
╔══════════════╗
║ regexp_match ║
╟──────────────╢
║ {wiki}       ║
╚══════════════╝
(1 row)
"wiki" is repeated in "wikiwiki".
bayes=> select regexp_match('fo wikiwi bar', '(.+)\1');
╔══════════════╗
║ regexp_match ║
╟──────────────╢
║ (∅)          ║
╚══════════════╝
(1 row)
nothing is repeated.
Adjust the expression within parentheses if you want to match somethig
more specific than any sequence of one or more characters.
hp
-- 
   _  | Peter J. Holzer    | Story must make more sense than reality.
|_|_) |                    |
| |   | hjp(at)hjp(dot)at         |    -- Charles Stross, "Creative writing
__/   | http://www.hjp.at/ |       challenge!"
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Avi Weinberg | 2021-12-09 14:19:35 | RE: Identity/Serial Column In Subscriber's Tables | 
| Previous Message | Shaozhong SHI | 2021-12-09 12:38:15 | Detecting repeated phrase in a string |