所以我在PostgreSQL中有下表。正則表達式 - 刪除最後一個字面
這是一個測試表只能有一列route
有路線名字的價值像
I-95
US-95N
I-95 S
我想從所有的路由名稱中刪除尾隨方向的文字。
UPDATE <schema>.<table>
SET route= regexp_replace(route, '%[:digit:](S|N|E|W)', '%[:digit:]', 'ig');
記錄沒有變化。任何人都知道我在這裏做錯了嗎?
所以我在PostgreSQL中有下表。正則表達式 - 刪除最後一個字面
這是一個測試表只能有一列route
有路線名字的價值像
I-95
US-95N
I-95 S
我想從所有的路由名稱中刪除尾隨方向的文字。
UPDATE <schema>.<table>
SET route= regexp_replace(route, '%[:digit:](S|N|E|W)', '%[:digit:]', 'ig');
記錄沒有變化。任何人都知道我在這裏做錯了嗎?
要刪除任何單個字母標誌着一個數字之後緊跟一個基本方向:
UPDATE tbl
SET route = regexp_replace(route, '(\d)[SNEW]', '\1', 'ig')
一個正回顧後比賽會更elgant,但遺憾的是隻有lookahead matches實現。所以我使用back-reference重新插入比賽中的第一個(捕獲)部分。
的bracket expression[SNEW]
是不是多分支
,這將需要在這種情況下,情況更簡單:(S|N|E|W)
(:?S|N|E|W)
。
提供一些樣本值和預期結果是很好的形式。 *永遠*你的Postgres版本。 – 2014-11-21 18:03:14