假设我有一个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))
有什么想法吗?谢谢!
答案 0 :(得分:1)
你可以尝试
gsub('.*?\\(([^)]*)\\).*', '\\1', text)
#[1] "0.43/100 ml"
演示
.*?\\(([^)]*)\\).*
答案 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"