R,选择性地去除部分弦

时间:2014-11-05 15:45:54

标签: r string

我很难想到使用R从字符串中删除部分的有效方法。 我有正在读入R的文本数据。数据是HTML格式,如下所示:

dummy <- c("Blah Blah 10pt margins blah blah 11pt blah format 23pt real answer34")

我试图只隔离那个&#34; 34&#34;但是,由于所有的&#34; 10pt&#34;我不能简单地拔出数字。和&#34; 11pt&#34;和&#34; 23pt&#34; HTML格式。

我想做的是,对于我找到文本&#34; pt,&#34;的每个实例。删除&#34; pt&#34;前面的两个字符。如果我这样做,我可以得到:

newDummy <- c("Blah Blah pt margins blah blah pt blah format pt real answer34")

然后我可以从字符串库中通过str_extract_all(newDummy,"\\(?[0-9,.]+\\)?")得到34的答案。

问题在于我似乎无法有效地转动&#34;虚拟&#34;进入&#34; newDummy&#34; - 有没有人有一个整洁的解决方案?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用:

dummy <- c("Blah Blah 10pt margins blah blah 11pt blah format 23pt real answer34")
library(stringi)
stri_extract_all_regex(dummy,'\\d+?\\d(?!pt)')[[1]]
#[1] "34"

library(stringr)
str_extract_all(dummy, "\\b\\d+\\b")[[1]]
#[1] "34"

更新

dummy <- "10pt 11pt realanswer34"
stri_extract_all_regex(dummy,'\\d+?\\d(?!pt)')[[1]]
#[1] "34"

或使用str_extract_all

str_extract_all(dummy,perl('\\d+?\\d(?!pt)'))[[1]]
#[1] "34"