我有一个人员列表,有些人的名字带有中间的首字母,有些人只有名字。我想创建一个正则表达式,它的第一个组只匹配第一个名称。
一些例子:
- "Ben t"->"Ben"
- "Lisa Ann t"->"Lisa An"
- "本"->"本"
如果我只想去掉后面的中间首字母,这对(.*)( .)
这样的东西来说很容易,但我不能确定中间首字母是否总是存在。我在Postgres做这件事,以备不时之需。
试试这个:
SELECT regexp_replace('Lisa Ann t', '\s\S+$', '');
使用case
和字符串操作很容易做到这一点:
select (case when firstname like '% _' then left(firstname, length(firstname) - 2)
else firstname
end) as firstname