【发布时间】:2021-02-14 02:14:15
【问题描述】:
要求 我的要求是检查一个人的姓名是否包含 Initials ,将其替换为该字母和句点的 Caps 。对于我的要求,姓名首字母始终是单字母名称,或者名称中的单字母字符串在空格之前或之后。
挑战 我正在使用 REGEXP_REPLACE 并使用 \y 在单词边界内搜索单个字符。这工作正常,但现在我需要在替换字符串中使用相同的字符并将其设为大写并添加句点。基本上下面查询中的 $1 应该替换为我从模式 \y[(A-Z)(a-z)]\y
得到的字符串select REGEXP_REPLACE(first_name,'\y[(A-Z)(a-z)]\y',upper($1|| '.'),'g' )from public.regextest
样本数据
Below is table of sample data and code to create sample data
first_name Suggested value
A A.
H M H. M.
Lars E Lars E.
Jo Jo
BO Bo
X X X X. X. X.
M HAMED M. HAMED
M P Rajan M. P. Rajan
Rajan M P Rajan M. P.
以下是创建示例数据的代码。
create table public.regextest( first_name varchar(100))
insert into public.regextest values ( 'A')
,('H M')
,('Lars E')
,('Jo')
,('BO')
,('X X X')
,('M HAMED')
,('M P Rajan')
,('Rajan M P')
【问题讨论】:
-
您的示例名字都没有小写字母。我猜
Lars e会是Lars E.?感谢您提供示例数据。
标签: regex postgresql regexp-replace