我试图提取R中的子字符串,使用stringr
。有些timeago我写了一个脚本来完成这项工作,但它不再工作。可能是由于更新,但我不知道。使用正则表达式提取子字符串
我的字符串看起来像(!)这样:myStr <- " layout = (3,3); //lala"
。 该字符串将始终包含layout
关键字,等号和两个大括号(open ... close)。然而,两者之间的论据数量可能有所不同:(1,23,455,22)也是可能的。 )
之后的部分也可以变化。
我喜欢从(
开始并以)
结尾的子字符串。因此这个例子必须给出:(3,3)
。其他人可能会给(1,23,455,22)
。
到现在我用这个:
library(stringr)
str_extract(" layout = (3,3); //lala", "*\\(.*\\)")
然而,这不工作了。它给了我这个错误:
Error in stri_extract_first_regex(string, pattern, opts_regex = attr(pattern, :
Syntax error in regexp pattern. (U_REGEX_RULE_SYNTAX)
它曾经工作在过去。这个正则表达式有什么不对?
编辑: 如果字符串包含两对大括号,则子应该选择离开对(其他被注释掉与//
):
Str <- "layout = (1,2,3,4) //lala(huhu)"
gsub(".*([(])(.*)([)]).*", "\\1\\2\\3", Str)
#gives "(huhu)" which is not good; should be (1,2,3,4)
什么语言,你wrting这个吗? – jessica
你可以使用'strsplit'来分割列,并用'“(”,“)”'来提取中间的列。只是一个想法。 – Veera
尝试'str_extract(Str,“\\([0-9,] + \\)”)' – akrun