【问题标题】:Split sentence by words with regex in R用R中的正则表达式按单词拆分句子
【发布时间】:2014-03-10 12:43:28
【问题描述】:

我正在使用(或我想使用)R 来提取一些信息。我有以下句子,我想拆分。最后,我只想提取数字 24。

这是我所拥有的:

doc <- "Hits  1 - 10 from 24"

我想提取数字“24”。一旦我可以减少“Hits 1 - 10 from”和“24”中的句子,我就知道如何提取数字。我试过用这个:

n_docs <- unlist(str_split(key_n_docs, ".\\from"))[1]

但这给我留下了:“命中 1 - 10” 显然,拆分以某种方式起作用,但我对“来自”之后的部分感兴趣,而不是之前的部分。感谢所有帮助!

【问题讨论】:

  • n_docs &lt;- sapply(strsplit(key_n_docs, "from"),`[`,2)

标签: regex r split


【解决方案1】:

如果要从单个字符串中提取:

strsplit(key_n_docs, "from")[[1]][2]

或@BastiM 使用的等效表达式(抱歉,我在提交我的答案后看到了你的答案)

unlist(strsplit(key_n_docs, "from"))[2]

如果要从字符串向量中提取:

sapply(strsplit(key_n_docs, "from"),`[`, 2)

【讨论】:

    【解决方案2】:

    通常str_split 的结果将包含您在索引1 处搜索的数字,但由于您使用unlist 包装它,因此您似乎必须将索引增加一。使用

    unlist(strsplit("Hits  1 - 10 from 24", "from"))[2]
    

    对我来说就像一个魅力。

    demo @ ideone

    【讨论】:

      【解决方案3】:

      您可以从stringr 使用str_extract

      library(stringr)
      numbers <- str_extract(doc, "[0-9]+$")
      

      这将只给出句子末尾的数字。

      numbers
      "24"
      

      【讨论】:

        【解决方案4】:

        您可以使用sub提取号码:

        sub(".*from *(\\d+).*", "\\1", doc)
        # [1] "24"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-24
          • 1970-01-01
          • 2014-03-24
          • 1970-01-01
          相关资源
          最近更新 更多