Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从特定符号后的字符中选择特定字母_R_Regex - Fatal编程技术网

R 从特定符号后的字符中选择特定字母

R 从特定符号后的字符中选择特定字母,r,regex,R,Regex,需要去掉“(”之前的所有字符,并将它们与“;”组合在一起 我希望输出为 "pi1;pi2" 如果字符串的结构与所示完全相同,我们可以使用gsub gsub("\\(.*?\\)|;$", "", pilist) #[1] "pi1;pi2" 但是,根据您的描述,也可以提取我们想要的单词,而不是删除。使用str\u extract\u all paste0(stringr::str_extract_all(pilist, "(\\w+)(?=\\(.*\\))")[[1]], collaps

需要去掉“(”之前的所有字符,并将它们与“;”组合在一起

我希望输出为

"pi1;pi2"

如果字符串的结构与所示完全相同,我们可以使用
gsub

gsub("\\(.*?\\)|;$", "", pilist)
#[1] "pi1;pi2"

但是,根据您的描述,也可以提取我们想要的单词,而不是删除。使用
str\u extract\u all

paste0(stringr::str_extract_all(pilist, "(\\w+)(?=\\(.*\\))")[[1]], collapse = ";")
#[1] "pi1;pi2"

你可以试试这个式样

\([^)]+\)|;+$


注意:-根据您的正则表达式引擎,将转义字符用作
\\
\
,快速而肮脏的解决方案-
粘贴(sub(\(.*),“”,strsplit(“pi1(tag1,tag2);pi2(tag3,tag4,tag5);”,“;”[[1]]),collapse=“”
。但这还远远不够完美,正则表达式应该轻松解决这个问题你可以用
trimws(…,whitespace=';')
将它们包装起来,以摆脱拖尾
@Sotos yeah..或者可以包装另一个子
来删除
;$
。或者甚至类似于
粘贴(strsplit('pi1;p12;',;'))[[1]],折叠=';”)
:D
\([^)]+\)|;+$