用R中的正则表达式的单词分割句子

时间:2014-03-10 12:43:28

标签: regex r split

我正在使用(或者我想使用)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” 显然,分裂以某种方式起作用,但我对“从”而不是之前的部分感兴趣。所有的帮助表示赞赏!

4 个答案:

答案 0 :(得分:2)

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

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

对我来说就像是一种魅力。

demo @ ideone

答案 1 :(得分:2)

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

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

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

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

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

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

答案 2 :(得分:2)

您可以使用str_extract中的stringr

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

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

numbers
"24"

答案 3 :(得分:1)

您可以使用sub提取数字:

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