我有一个包含人名和城市的字符串。它的格式如下:
mock <- "Joe Smith (Cleveland, OH)"
我只想保留州的缩写,所以在这种情况下,唯一剩下的字符串就是“OH”
我可以摆脱括号和逗号
[(.*?),]
这给了我:
"Joe Smith Cleveland OH"
但我无法弄清楚如何将所有这些结合起来。为了记录,所有记录看起来都是这样的,它以“,两个字母的大写字母缩写”结尾(例如:“,OH”,“,KY”,“,MD”等......)
答案 0 :(得分:2)
您可以使用
mock <- "Joe Smith (Cleveland, OH)"
sub(".+,\\s*([A-Z]{2})\\)$","\\1",mock)
## => [1] "OH"
## With stringr:
str_extract(mock, "[A-Z]{2}(?=\\)$)")
请参阅this R demo
<强>详情
.+,\\s*([A-Z]{2})\\)$
- 尽可能多地匹配任何1个字符,然后匹配,
,0 +空格,然后将2个大写ASCII字母捕获到第1组(从\1
引用)替换模式)然后匹配字符串)
[A-Z]{2}(?=\)$)
- 匹配2个大写ASCII字母,如果跟在字符串末尾的)
后面。答案 1 :(得分:1)
这个怎么样?如果它们的格式都相同,那么这应该可行。
mock <- "Joe Smith (Cleveland, OH)"
substr(mock, (nchar(mock) - 2), (nchar(mock) - 1))
答案 2 :(得分:0)
如果一般情况是状态是第二个和第三个最后一个字符,则匹配所有内容.*
,然后匹配两个字符(..)
的捕获组,然后匹配另一个字符{{1}并将其替换为捕获组:
.