Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 匹配所有内容直到插入括号_Regex_R - Fatal编程技术网

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()