将所有匹配项提取到 Google 表格中的相邻列单元格

Gro*_*ler 1 regex google-sheets re2 google-sheets-formula

问题:寻找 Google Sheets 正则表达式来捕获之间的字符串的所有实例[t- ],并将其作为数组或匹配之间的其他分隔符输出到相邻的列单元格。

\n\n

对于以下字符串,我尝试提取 之间的所有文本实例[t- ]

\n\n

A1:

\n\n
\n

Lorem Ipsum [t- 只是] [t- 印刷]和排版 [c- 工业]的虚拟文本,因此 [d- 有意义]

\n
\n\n

预期输出是单列中所有出现的情况的数组:

\n\n

B1:

\n\n
\n

[简单来说就是打印]

\n
\n\n

或者输出可以是匹配出现的任何分隔符

\n\n
\n

简单来说就是| 印刷

\n
\n\n

尝试使用单个文本进行以下操作[t- ]效果很好,但对于多个实例,它会提取[t-第一次出现的打开和]最后一次出现的打开之间的所有内容:

\n\n

=REGEXEXTRACT(A1,"\\[t- (.*)\\]")

\n\n

导致:

\n\n
\n

简直就是]![t- 打印的虚拟文本

\n
\n\n

我还尝试了多个捕获组,但只有当我确定 \xe2\x80\x94 之间只有两个文本实例(每行[t- ]可能有实例)时,这才有效。n此外,它不会将结果输出到一列中的数组,而是分布在多列中:

\n\n

=regexextract(A1, "(\\[t- (.*)\\]).*(\\[t- (.*)\\])" )

\n\n
\n\n

编辑:我收到了几个关于 Regex 的答案,这些答案适用于其他工具/语言(例如 PHP 或 Javascript),但不适用于 Google Sheets。这是Google Sheets 正则表达式语法

\n\n

编辑2:上面的示例字符串在括号内有其他文本,并标有其他字母,例如[c- industry][d- it would make]。这些不应包括在内。[t- ]仅应返回短信(带有“t-”)。

\n

The*_*ter 7

与这里使用的技术类似,

  • REGEXREPLACE全部[t-.*](.*)
  • 提供上面的结果表达式作为正则表达式REGEXEXTRACT
  • \Q..\E用于转义其他字符

    =REGEXEXTRACT(A1, "\Q"&REGEXREPLACE(A1,"\[t-[^]]+\]","\\E(.*)\\Q")&"\E")
    
    Run Code Online (Sandbox Code Playgroud)

或者,仅用于REGEXREPLACE界定,

=REGEXREPLACE(A1,"(^|\])(.*?)(\[t-|$)","$1|$3")
=SPLIT(REGEXREPLACE(A1,"(^|\])(.*?)(\[t-|$)","$1|$3"),"|")
Run Code Online (Sandbox Code Playgroud)

替换所有.*字符

  • ]以字符串开头或开头^
  • 以字符串结尾[t-或结尾$

]|[t-