从R中的文本中提取确切路径
extracting exact path from text in R
假设我有一个 data.frame,其中每一行都是如下文本:
text<-"Odysea Greek Extra Virgin 1.38 (0.43/100 ml) Subscribe & Save Get"
我想提取如下所示的文本部分(使用 R):
“0.43/100 ml
”,考虑到从一行到另一行,可能会有或多或少不同的空格和字符,例如。 “00.451 /100 gr
”等
我试过了,但没用:
extraction<-as.data.frame(gsub(pattern=[^"\([:space:]*[:print:]*[:space:]*/[:space:]*[:print:]*\)]", "", text))
有什么想法吗?谢谢!
你可以试试
gsub('.*?\(([^)]*)\).*', '\1', text)
#[1] "0.43/100 ml"
演示
.*?\(([^)]*)\).*
(?<=\()[^)]*(?=\))
尝试 this.See 演示。
https://regex101.com/r/pM9yO9/1
对于 r 它可能是
(?<=\()[^)]*(?=\))
Lookbehind
将确保您有 (
并且前瞻性将确保您在捕获的事件之前有 )
。
也可以尝试 qdapRegex
包及其 rm_
方法
library(qdapRegex)
rm_round(text, extract = TRUE)[[1]]
## [1] "0.43/100 ml"
假设我有一个 data.frame,其中每一行都是如下文本:
text<-"Odysea Greek Extra Virgin 1.38 (0.43/100 ml) Subscribe & Save Get"
我想提取如下所示的文本部分(使用 R):
“0.43/100 ml
”,考虑到从一行到另一行,可能会有或多或少不同的空格和字符,例如。 “00.451 /100 gr
”等
我试过了,但没用:
extraction<-as.data.frame(gsub(pattern=[^"\([:space:]*[:print:]*[:space:]*/[:space:]*[:print:]*\)]", "", text))
有什么想法吗?谢谢!
你可以试试
gsub('.*?\(([^)]*)\).*', '\1', text)
#[1] "0.43/100 ml"
演示
.*?\(([^)]*)\).*
(?<=\()[^)]*(?=\))
尝试 this.See 演示。
https://regex101.com/r/pM9yO9/1
对于 r 它可能是
(?<=\()[^)]*(?=\))
Lookbehind
将确保您有 (
并且前瞻性将确保您在捕获的事件之前有 )
。
也可以尝试 qdapRegex
包及其 rm_
方法
library(qdapRegex)
rm_round(text, extract = TRUE)[[1]]
## [1] "0.43/100 ml"