给定一个字符串 str = "高级软件工程师 (山景城)"
如何匹配直到第一个括号出现的所有内容,返回 "高级软件工程师"?
您可以使用^[^\(]+
来匹配,然后修剪它以删除尾随空格。
(
后面的所有内容。 - DiverseAndRemote.com^[^\(]*
[^\(]
是一个字符类,它匹配除了(
以外的所有内容。*
表示贪婪匹配,尽可能多地匹配该字符类。而开头的^
表示从字符串的开头开始匹配。
^.*?(?=\s\()
。 ^(.*?)
告诉它尽可能少地匹配字符,从字符串开头开始,并且(?=\s\()
将匹配的另一端固定在您的括号上,不捕获它或其前面的空格。*\\(.*
。str <- "Senior Software Engineer (mountain view)"
sub(" *\\(.*", "", str)
# [1] "Senior Software Engineer"
如果您想匹配括号前后的所有内容,请尝试以下方法:
搜索:^[^\(]+|(\)).*
替换为:\1
如果您想匹配所有括号并将其删除,请尝试以下方法:
搜索:\([^(\r\n]*?\)|\(|\)
替换为:(留空)
library("stringr")
str_match_all(str, "^[^\\(]+")
str_match_all(str, "^[^\\(]+") %>% toString()
软件包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
^[^(]+
,r
实现留给其他人... - Wrikken