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

时间:2019-08-30 07:15:45

标签: r regex

需要取出“(”之前的所有字符并将其与“;”组合起来

stringr::word(pilist, 2, sep = '(\\s*|\\')

pilist = "pi1(tag1,tag2);pi2(tag3,tag4,tag5);"

我希望输出为

"pi1;pi2"

2 个答案:

答案 0 :(得分:1)

如果您的字符串具有与所示完全相同的结构,则可以使用;删除圆括号和结尾gsub之间的所有内容

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

但是,按照您的描述,也可以通过提取我们想要的单词而不是删除单词来完成。使用str_extract_all

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

答案 1 :(得分:1)

您可以尝试此模式

public static PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer("my-custom-database-image")
       .withDatabaseName("my_db")
       .withUsername("my_name")
       .withPassword("my_pwd")
       .withExposedPorts(5432);

this blog post

enter image description here

注意:-根据您的正则表达式引擎,将转义符用作\([^)]+\)|;+$ \\