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
\([^)]+\)|;+$