所以我在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