MW211 EXIT

devlog
PostgreSQL/regexp_replace()の最短一致
2013年06月14日
「regexp_replace()」では基本最長一致で置換される。
「.*」や「.+」の場合、最短一致にするには末尾に「?」を付ければいいようだ。

例えば、LF改行で特定の行を置換するにはこんな感じとなる。
┌──────────────────────────────────────┐
│UPDATE 表 SET 列 = regexp_replace(列,                                       │
│                                  '見出:.*?' || chr(10),                   │
│                                  '見出:'    || chr(10));                  │
└──────────────────────────────────────┘

例えば、CRLF改行の場合はこう。
┌──────────────────────────────────────┐
│UPDATE 表 SET 列 = regexp_replace(列,                                       │
│                                  '見出:.*?' || chr(13) || chr(10),        │
│                                  '見出:'    || chr(13) || chr(10));       │
└──────────────────────────────────────┘
分類:PostgreSQL