【问题标题】:Matching a word after another word in R regex在 R 正则表达式中匹配一个单词后的单词
【发布时间】:2016-01-15 05:03:51
【问题描述】:

我在 R 中有一个数据框,其中一列(称为“城市”)包含一个文本字符串。我的目标是从文本字符串中只提取一个单词,即城市文本。城市文本总是跟在单词“in”之后,例如文本可能是:

'in London'
'in Manchester'

我尝试创建一个新列(“市政”):

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

这给了我“in”后面的第一个字母,但我需要下一个单词(仅下一个单词)

然后我尝试了:

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

它适用于正则表达式检查器,但不适用于 R。有人可以帮助我吗?我知道这可能很简单,但我无法破解它。提前致谢。

【问题讨论】:

    标签: regex r gsub


    【解决方案1】:

    我们可以使用str_extract

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

    【讨论】:

    • 如何将其从下一个单词修改到文本末尾?我这里有一些异常值,其中包含几个单词。谢谢
    • @RichS 你能用一些可能的例子和预期的输出来更新你的帖子吗?或者更好的办法是将其作为一个新问题发布。
    【解决方案2】:

    以下正则表达式将匹配您的 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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多