Regex 匹配所有内容直到插入括号
给定字符串Regex 匹配所有内容直到插入括号,regex,r,Regex,R,给定字符串str=“高级软件工程师(山景城)” 如何匹配所有内容,直到我找到第一个括号,并返回“高级软件工程师”您将使用^[^\(]+匹配它,然后修剪它以删除尾随空格^[^\(]* [^\(]是一个字符类,它匹配除()之外的所有字符,而*是一个贪婪的匹配,它尽可能多地匹配该类。开头的^与字符串开头匹配。要避免尾随空格,请尝试^.*(?=\s\() ^(.*)告诉它从字符串开始匹配尽可能少的字符,(?=\s\()将匹配的另一端锚定到paren,而不捕获它或它前面的空格。您可以在R:*\(. str
str=“高级软件工程师(山景城)”
如何匹配所有内容,直到我找到第一个括号,并返回“高级软件工程师”您将使用^[^\(]+
匹配它,然后修剪它以删除尾随空格^[^\(]*
[^\(]
是一个字符类,它匹配除(
)之外的所有字符,而*
是一个贪婪的匹配,它尽可能多地匹配该类。开头的^
与字符串开头匹配。要避免尾随空格,请尝试^.*(?=\s\()
^(.*)
告诉它从字符串开始匹配尽可能少的字符,(?=\s\()
将匹配的另一端锚定到paren,而不捕获它或它前面的空格。您可以在R:*\(.
str如果要匹配括号前后的所有内容,请尝试以下操作:
搜索:^[^\(]+|(\)..
替换为:\1
如果您想匹配所有参数并删除它们,请尝试以下操作:
搜索:\([^(\r\n]*?\)\124;\(\ 124;\)
替换为:(留空)
一种整洁的方式
library("stringr")
下面的输出,将返回您的列表
如果你需要的话
包unglue提供了一个可读的替代方案:
#安装程序包(“unglue”)
图书馆(非蓝色)
x[1]“高级软件工程师”
更多信息:Plain regex:^[^(+
,r
我留给其他人的实现…不要用“[responsed]”之类的东西编辑标题。这就是答案旁边的复选标记的用途。使用它们!它很有效!特别是regmatches(str,regexpr(“^[^\(]+”,str))[[1]];为什么第一个^
是必需的?@Swadq它匹配一行的开头。如果没有它,你也会匹配后面的所有内容(
啊,是的,的确是^^^^^我会编辑我的答案,以免让后面的读者感到困惑
library("stringr")
str_match_all(str, "^[^\\(]+")
str_match_all(str, "^[^\\(]+") %>% toString()