我希望函数返回以下条件后面的字符串。
1.在“def”之后
1.在“def”之后第一个%ile之前的括号中
因此,理想的输出是“4”,而不是“5”。到目前为止,我能够提取“2)(3)(4”。如果我将函数更改为str_extract_all,输出将变为“2)(3)(4”和“5”。我不知道如何修复此问题。谢谢!
x <- "abc(0)(1)%ile, def(2)(3)(4)%ile(5)%ile"
string.after.match <- str_match(string = x,
pattern = "(?<=def)(.*)")[1, 1]
parentheses.value <- str_extract(string.after.match, # get value in ()
"(?<=\\()(.*?)(?=\\)\\%ile)")
parentheses.value
把
3条答案
按热度按时间qco9c6ql1#
qltillow2#
下面是一个使用
gsub()
的单行程序这里有一种方法,可以处理任意数量的“%ile“。
34gzjxbg3#
您可以使用
请参阅R demo online和regex demo。
\b
-字边界def
-def
字串(?:\((\d+)\))+
-(
的零次或多次出现+一个或多个数字(捕获到组1中)+)
,最后捕获的数字保存在组1中%ile
-一个%ile
字符串。