【问题标题】:R Split sentence based on patternR基于模式拆分句子
【发布时间】:2023-04-01 10:30:01
【问题描述】:

我需要根据地址模式拆分句子。以下是我面临的问题的可重现示例。

 s <- c("Junipero Sierra Room 9001 coals ave","patio room2200 virginia beach ave")

目前,这就是我正在使用的

  gsub(".*([A-z]{1,}[0-9]{2,6})|.*([A-z]{1,} [0-9]{2,6})", "\\1",s)

这就是我得到的,

 [1] " coals ave"               "m2200 virginia beach ave"

但这就是我想要的

[1] "9001 coals ave"         "2200 virginia beach ave"

【问题讨论】:

  • 您的示例无助于概括问题。也许用文字描述你期望分裂做什么。这将如何与其他字符串一起使用?
  • 试试sub(".*?(\\d{4})", "\\1", s)。顺便说一句,你的正则表达式背后的逻辑是什么?

标签: r gsub


【解决方案1】:

看来你只是想切断[0-9]{2,6}之前的所有内容:

> gsub(".*?([0-9]{2,6})", "\\1", s)
[1] "9001 coals ave"          "2200 virginia beach ave"

【讨论】:

    【解决方案2】:
    s <- c("Junipero Sierra Room 9001 coals ave","patio room2200 virginia beach ave")
    get.String=function(x){
      sx=unlist(strsplit(x,""))
      st=grep("[0-9]",sx)[1]
      x=substring(x,st,nchar(x))
      return(x)
    }
    sapply(s,get.String)
    

    【讨论】:

    • 虽然此代码可以回答问题,但提供有关 如何为什么 解决问题的附加上下文将提高​​答案的长期价值。
    猜你喜欢
    • 1970-01-01
    • 2019-11-02
    • 2017-10-17
    • 2020-02-07
    • 1970-01-01
    • 2021-10-19
    • 2021-10-25
    • 2016-06-27
    • 1970-01-01
    相关资源
    最近更新 更多