使用正则表达式删除尾随的中间名首字母

时间:2016-04-13 20:43:59

标签: regex postgresql

我有一个人的列表,有些人的名字中间有一个名字,有些人只有一个名字。我想创建一个正则表达式,其第一个组只匹配第一个名称。

一些例子:

  • " Ben t" - > "本"
  • " Lisa Ann t" - > " Lisa Ann"
  • "本" - > "本"

如果我只是想删除尾随的中间首字母,那么使用(.*)( .)之类的东西会很容易,但我无法确定中间的首字母将始终存在。我在Postgres这样做,以防万一。

2 个答案:

答案 0 :(得分:0)

使用case和字符串操作很容易做到:

select (case when firstname like '% _' then left(firstname, length(firstname) - 2)
             else firstname
         end) as firstname

答案 1 :(得分:0)

试试这个:

SELECT regexp_replace('Lisa Ann t', '\\s\\S+$', '');