匹配R正则表达式中的另一个单词后面的单词

时间:2016-01-15 05:03:52

标签: regex r gsub

我在R中有一个包含文本字符串的列(称为' city')。我的目标是从文本字符串中只提取一个单词,即城市文本。城市文字始终跟在“'”中,例如文字可能是:

'in London'
'in Manchester'

我尝试创建一个新列(' municipality'):

df$municipality <- gsub(".*in ?([A-Z+).*$","\\1",df$city)

这给了我&#39;之后的第一个字母,但我需要下一个字(只有下一个字)

然后我尝试了:

gsub(".*in ?([A-Z]\w+))")

在正则表达式检查器上工作,但在R中没有。有人可以帮助我。我知道这可能很简单,但我无法破解它。提前致谢。

2 个答案:

答案 0 :(得分:5)

我们可以使用str_extract

library(stringr)
str_extract(df$city, '(?<=in\\s)\\w+')
#[1] "London"     "Manchester"

答案 1 :(得分:4)

以下正则表达式将与您的city列中的第二个字匹配:

^in\\s([^ ]*).*$

这匹配单个空格后跟单词in,后跟任意非空格字符的捕获组,其中包含城市名称。

示例:

df <- data.frame(city=c("in London town", "in Manchester city"))

df$municipality <- gsub("^in\\s([^ ]*).*$", "\\1", df$city)

> df$municipality
[1] "London"     "Manchester"