匹配所有内容直到括号

时间:2012-12-13 20:24:23

标签: regex r

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

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

7 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:7)

^[^\(]*

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

答案 2 :(得分:5)

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

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

答案 3 :(得分:4)

您可以在R:*\\(.*

中使用这个简单的正则表达式
str <- "Senior Software Engineer (mountain view)"

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

它还避免了尾随空格。

答案 4 :(得分:0)

如果您想在括号前后匹配所有内容,请尝试以下操作:

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

替换者:\1

,如果要匹配所有括号并删除它们,请尝试以下操作:

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

替换者:(LEAVE EMPTY)

答案 5 :(得分:0)

一种整洁的方式...

library("stringr")
  

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

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

如果您需要输入字符串

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

答案 6 :(得分:0)

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