Regex 一个单元格内多行上的正则表达式抽取

Regex 一个单元格内多行上的正则表达式抽取,regex,google-sheets,substitution,Regex,Google Sheets,Substitution,在Google Sheets中,我在一个单元格中有: Random stuff blah blah 123456789 <Surname, Name><123456><A><100><B><200> <Surname2, Name2><456789><A><300><B><400> Some more random stuff 并希望匹配括号内的字符串

在Google Sheets中,我在一个单元格中有:

Random stuff blah blah 123456789
<Surname, Name><123456><A><100><B><200>
<Surname2, Name2><456789><A><300><B><400>
Some more random stuff
并希望匹配括号内的字符串。使用=REGEXEXTRACTA4,我得到了:

Surname, Name><123456><A><100><B><200
这很好,但这只是第一行。期望的输出可能包括开始/结束时的输出,这并不重要:

Surname, Name><123456><A><100><B><200>
<Surname2, Name2><456789><A><300><B><400
或者简单地说:

Surname, Name><123456><A><100><B><200><Surname2, Name2><456789><A><300><B><400
如何到达那里?

请尝试:

=SUBSTITUTE(regexextract(substitute(A4,char(10)," "),"<(.*)>"),"> <",">"&char(10)&"<")

从中间开始,代替品用空间代替线断裂CHAR10。这使regexextract能够处理完整的ie多行字符串,模式与OP已经熟悉的模式相同。替换然后恢复被>和Google sheets使用的直接包围的相关空间。您可以设置多行和s标志以匹配多行。以下内容将匹配单元格A2中多行上的所有字符

=REGEXEXTRACT(A2, "(?ms)^(.*)$")
因此,在这种情况下:

REGEXEXTRACT(A1,"<(?ms)(.*)>")

虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。@pnuts看起来不错,谢谢您的解释!我想尝试一下,但在我开始之前,我要做一个快速的询问:因为我并不真正关心结果分布在几行上,这在我最初的问题中是不明显的,这能以某种方式简化吗,理想情况下只使用正则表达式?请参阅更新的问题。此问题应合并到您可以添加上下文吗?
REGEXEXTRACT(A1,"<(?ms)(.*)>")