如何使用gsub从含特殊字符的字符串中提取大写国家代码
提取字符串中的国家代码问题
需要从包含特殊字符的字符串里提取国家代码,示例字符串如下:
mystring [1] " data-country=\"GER\">"
尝试用以下代码提取,但未成功,反而拆分了目标内容GER:
gsub('(.+)[A-Z](.+)', '\\1', mystring)
解决方案
可以用更精准的正则表达式来匹配目标内容:
- 方法一:匹配
data-country="之后、"之前的所有大写字母
gsub('.+data-country="([A-Z]+)".+', '\\1', mystring)
该正则会捕获括号内的大写字母序列,替换时仅保留捕获组的内容。
- 方法二:如果只需提取连续3个大写字母(符合常见国家代码格式),可使用:
regmatches(mystring, regexpr('[A-Z]{3}', mystring))
regexpr定位到第一个匹配的连续3个大写字母,regmatches提取出该匹配内容。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

