使用 string 删除字符串中的括号、文本逗号和逗号

Removing parentheses, text proceeding comma, and the comma in a string using string

我有一个包含人名和城市的字符串。格式如下:

mock <- "Joe Smith (Cleveland, OH)"

我只想保留状态缩写,所以在这种情况下,唯一剩下的字符串是 "OH"

我可以去掉括号和逗号

[(.*?),]

这给了我:

"Joe Smith Cleveland OH"

但我不知道如何将所有这些组合起来。为了记录,所有的记录看起来都是这样的,它以“,两个字母的大写州缩写”结尾(例如:“,OH”,“,KY”,“,MD”等)

您可以使用

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 组(用 </code> 从替换模式),然后在字符串 </li> 的末尾匹配 <code>)
  • [A-Z]{2}(?=\)$) - 如果在字符串末尾后跟 ),则匹配 2 个大写 ASCII 字母。

这个怎么样。如果它们的格式都相同,那么这应该可以。

mock <- "Joe Smith (Cleveland, OH)"
substr(mock, (nchar(mock) - 2), (nchar(mock) - 1))

如果一般情况是状态在倒数第二个和倒数第三个字符然后匹配所有,.*,然后是两个字符的捕获组(..),然后是另一个字符. 并将其替换为捕获组:

sub(".*(..).", "\1", mock)
## [1] "OH"