【问题标题】:match everything until parenthesis匹配所有内容,直到括号
【发布时间】:2012-12-13 20:24:22
【问题描述】:

给定一个字符串str = "Senior Software Engineer (mountain view)"

如何匹配所有内容,直到我点击第一个括号,返回“高级软件工程师”

【问题讨论】:

  • 普通正则表达式:^[^(]+, r 实现我留给其他人...
  • 请勿使用“[已回答]”之类的内容编辑标题。这就是答案旁边的复选标记的用途。使用它们!

标签: regex r


【解决方案1】:

您可以使用 ^[^\(]+ 来匹配它,然后修剪它以删除尾随空格

【讨论】:

  • 它有效!特别是 regmatches(str, regexpr("^[^\(]+", str))[[1]];
  • 为什么需要第一个^
  • @Swadq 它匹配一行的开头。如果没有它,您还可以匹配 ( 之后的所有内容
  • 啊,是的,确实 ^^ 我将编辑我的答案,以免混淆以后的读者
【解决方案2】:

^[^\(]*

[^\(] 是一个字符类,匹配除( 之外的所有内容,而* 是一个贪婪匹配,它尽可能多次匹配该类。开头的^ 匹配字符串的开头。

【讨论】:

    【解决方案3】:

    要避免尾随空格,请尝试^.*?(?=\s\()

    ^(.*?) 告诉它从字符串的开头匹配尽可能少的字符,(?=\s\() 将匹配的另一端锚定到您的括号,而不捕获它或它之前的空格。

    【讨论】:

      【解决方案4】:

      您可以在 R 中使用这个简单的正则表达式:*\\(.*

      str <- "Senior Software Engineer (mountain view)"
      
      sub(" *\\(.*", "", str)
      # [1] "Senior Software Engineer"
      

      它还避免了尾随空格。

      【讨论】:

        【解决方案5】:

        一个整洁的方式...

        library("stringr")
        

        下面的输出,将返回您的列表...

        str_match_all(str, "^[^\\(]+")
        

        如果你需要在字符串中

        str_match_all(str, "^[^\\(]+") %>% toString()
        

        【讨论】:

          【解决方案6】:

          如果你想匹配括号之前和之后的所有内容,试试这个:

          搜索:^[^\(]+|(\)).*

          替换为:\1

          如果你想匹配所有括号并删除它们,试试这个:

          搜索:\([^(\r\n]*?\)|\(|\)

          替换为:(LEAVE EMPTY)

          【讨论】:

            【解决方案7】:

            unglue 包提供了一个可读的替代方案:

            # install.packages("unglue")
            library(unglue)
            
            x <- "Senior Software Engineer (mountain view)"
            unglue_vec(x,"{job} ({location})", var = "job")
            #> [1] "Senior Software Engineer"
            

            更多信息:https://github.com/moodymudskipper/unglue/blob/master/README.md

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-10-31
              相关资源
              最近更新 更多