我的数据是像这样的字符串:
'湯姆 is a boy.'
or '梅isagirl.'
or '約翰,is,a,boy.'.
我想分割字符串,只选择中文名称。
在R中,我可以使用命令
tmp=strsplit(string,[A-z% ])
unlist(lapply(tmp,function(x)x[1]))
然后得到我想要的中文名称。
但是在PostgreSQL中
select regexp_split_to_array(string,'[A-z% ]') from db.table
我得到一个数组,例如{'汤姆','','',''},{'梅','','',''},... 而且我不知道如何选择数组中的项目。
我尝试使用命令
select regexp_split_to_array(string,'[A-z% ]')[1] from db.table
我得到一个错误。
答案 0 :(得分:1)
我不认为regexp_split_to_array
是您在此处尝试执行的功能。而是使用regexp_replace
来有选择地删除所有ASCII字符:
SELECT string, regexp_replace(string, '[[:ascii:]~:;,"]+', '', 'g') AS name
FROM yourTable;
请注意,您可能需要调整要删除的字符集,具体取决于您希望string
列中包含哪些其他非中文字符。该答案为您提供了有关如何进行此操作的一般建议。