求助:如何在R语言中自动拆分含大写州名的拼接字符串
解决R语言中拆分全大写州名与后续首字母大写单词的问题
问题分析
你用str_extract(text, "[A-Z]+")得到KARNATAKAY而非预期的KARNATAKA,是因为正则[A-Z]+会匹配所有连续的大写字符,把后续单词的首字母大写Y也包含进去了。我们需要精准匹配全大写的州名,限定它后面紧跟的是「首字母大写、其余小写」的单词结构。
解决方案
利用正向先行断言来匹配符合条件的州名,再完成拆分:
1. 提取单个州名
library(stringr) text <- "KARNATAKAYenepoya" # 匹配连续大写字母,且后面紧跟大写+小写字母(即首字母大写的单词) state_name <- str_extract(text, "[A-Z]+(?=[A-Z][a-z])") print(state_name) # 输出:[1] "KARNATAKA"
2. 拆分完整地点字符串
针对你提供的多中心研究地点数据,批量拆分所有符合模式的州名:
full_text <- "Netra Jyothi Charitable Trust, C/o Prasad Netralaya Super specialty Eye Hospital,KARNATAKAYenepoya Medical College Hospital,KARNATAKA" # 全局替换,在匹配到的州名后添加空格分隔 formatted_text <- str_replace_all(full_text, "([A-Z]+)(?=[A-Z][a-z])", "\\1 ") print(formatted_text)
输出结果:
[1] "Netra Jyothi Charitable Trust, C/o Prasad Netralaya Super specialty Eye Hospital,KARNATAKA Yenepoya Medical College Hospital,KARNATAKA"
正则说明
[A-Z]+:匹配一个或多个连续大写字母(州名部分)(?=[A-Z][a-z]):正向先行断言,确保匹配的大写序列后面必须紧跟大写字母+小写字母,以此区分州名和后续单词的首字母,避免误匹配。
内容的提问来源于stack exchange,提问作者Oindrila Roy Chowdhury
相关产品推荐
相关产品推荐

