从R中的文本中提取精确路径

时间:2015-01-28 11:30:40

标签: regex r gsub

假设我有一个data.frame,其中每一行都是如下文本:

text<-"Odysea Greek Extra Virgin 1.38 (0.43/100 ml) Subscribe & Save Get"

我希望提取部分文本(使用R),如下所示: &#34; 0.43/100 ml&#34;,考虑到从一行到另一行,可能会有或多或少不同的空格和字符,例如。 &#34; 00.451 /100 gr&#34;等等。

我试过了,但它没有用:

extraction<-as.data.frame(gsub(pattern=[^"\\([:space:]*[:print:]*[:space:]*/[:space:]*[:print:]*\\)]", "", text))

有什么想法吗?谢谢!

3 个答案:

答案 0 :(得分:1)

你可以尝试

gsub('.*?\\(([^)]*)\\).*', '\\1', text)
#[1] "0.43/100 ml"

演示

.*?\\(([^)]*)\\).*

Regular expression visualization

Debuggex Demo

答案 1 :(得分:1)

(?<=\()[^)]*(?=\))

试试这个。看看演示。

https://regex101.com/r/pM9yO9/1

对于r,它可能是

(?<=\\()[^)]*(?=\\))

Lookbehind会确保您拥有(,并且前瞻会确保您拥有),而不是您捕获的人。{/ p>

答案 2 :(得分:1)

还可以尝试qdapRegex包及其rm_方法

library(qdapRegex)
rm_round(text, extract = TRUE)[[1]]
## [1] "0.43/100 ml"