Regexextract在一个单元格内的多行

时间:2015-02-24 15:47:22

标签: regex google-sheets substitution

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

Random stuff blah blah 123456789
<Surname, Name><123456><A><100><B><200>
<Surname2, Name2><456789><A><300><B><400>
Some more random stuff

并希望匹配<>括号内的字符串。到目前为止我已经= REGEXEXTRACT(A4, "<(.*)>")了:

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

如何到达那里?

3 个答案:

答案 0 :(得分:2)

请尝试:

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

从中间开始,substitute用空格替换换行符(char(10))。这使regexextract完整(即多行)字符串能够工作,其模式与OP已经熟悉的模式相同。 SUBSTITUTE然后使用换行符恢复相关空间(标识为被><立即包围)。

答案 1 :(得分:0)

REGEXEXTRACT(A1,"text1(?ms)(.*)text2")

因此,在这种情况下:

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

答案 2 :(得分:-1)

Google表格使用RE2 syntax。您可以设置multi-lines标志以匹配多行。以下将匹配单元格A2中多行上的所有字符。

=REGEXEXTRACT(A2, "(?ms)^(.*)$")