使用字符串删除括号,文本进行逗号和字符串中的逗号

时间:2018-02-16 22:07:51

标签: r regex stringr

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

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

我只想保留州的缩写,所以在这种情况下,唯一剩下的字符串就是“OH”

我可以摆脱括号和逗号

[(.*?),]

这给了我:

"Joe Smith Cleveland OH"

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

3 个答案:

答案 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}并将其替换为捕获组:

.