Regex GoogleSheets:如何基于同一单元格中的其他文本从单元格中提取文本

Regex GoogleSheets:如何基于同一单元格中的其他文本从单元格中提取文本,regex,google-sheets,google-sheets-formula,Regex,Google Sheets,Google Sheets Formula,免责声明:我不是一个编码员,而是一个简单的低级项目协调员,需要谷歌表单的帮助:D 我在A1单元内有以下文本 [0] (SCL) Mary, Martha [0] (SCC) [3] (MDL) John, Joe, Jerry 我想从A1中提取,B1中的结果应该是 Mary, Martha 而单元格C1将导致 最后是D1 John, Joe, Jerry 基本上,我希望单元格根据其“代码”从A1中提取名称(SCL),(SCC)和(MDL)因此B1将只包含带有代码(SCL)的名称,C1表

免责声明:我不是一个编码员,而是一个简单的低级项目协调员,需要谷歌表单的帮助:D

我在A1单元内有以下文本

[0] (SCL) Mary, Martha
[0] (SCC) 
[3] (MDL) John, Joe, Jerry
我想从A1中提取,B1中的结果应该是

Mary, Martha
而单元格C1将导致

最后是D1

John, Joe, Jerry
基本上,我希望单元格根据其“代码”从A1中提取名称(SCL),(SCC)和(MDL)因此B1将只包含带有代码(SCL)的名称,C1表示带有代码(SCC)的名称,D1表示带有代码(MDL)的名称,我希望忽略其余内容。我希望这是有道理的。感谢您的帮助。我与正则表达式的东西斗争:(

我将使用一个公式从其中一个代码中提取名称。顺便说一句!谢谢!

看看这是否有效

=ArrayFormula(regexreplace(split(A1, char(10)), "^.+\)\s?(.*)$", "$1" ))

另一种方法(尽管您的一个示例非常具体,让我怀疑是否每个这样的单元都会完全遵循此布局):

=ArrayFormula(TRIM(REGEXEXTRACT(A1,“\)([^\[]*)[^\]]+\)([^\[]*)[^\]]+\)(.+)$”)

看起来很混乱,我敢肯定。重要的是要理解单元格中的许多字符本身对正则表达式有意义,因此它们需要用反斜杠“转义”(这意味着当前面有反斜杠时,它们将被视为文字字符)。因此,无论在哪里看到反斜杠,下一个字符都是实际字符串中的一个字符


下面是这个公式在简单英语中的意思:"找到第一个右括号。然后捕获尽可能多的非方括号开头的字符并返回它们。忽略下一个右括号之前的所有字符,然后再次捕获尽可能多的非方括号开头的字符并返回它们。再次,忽略下一个右括号结尾之前的所有字符括号并返回字符串末尾的所有内容。“

正确吗…?您希望单元格C1为空吗?@Adriano Yep!这是因为单元格A1中的代码(SCC)没有附加名称:)我现在使用了一个麻烦的解决方法
=split(A1,“()[]”,true)
然后索引,像这样匹配结果
=index(结果范围,1,匹配(“MDL”,结果范围,0)+1,很好。将其添加到问题中。我打赌这是让您的问题被否决的缺失部分。这里“$1”是什么意思?它指的是正则表达式的第一个捕获组。请参阅: