You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:06:31