Gro*_*ler 1 regex google-sheets re2 google-sheets-formula
问题:寻找 Google Sheets 正则表达式来捕获之间的字符串的所有实例[t- ],并将其作为数组或匹配之间的其他分隔符输出到相邻的列单元格。
对于以下字符串,我尝试提取 之间的所有文本实例[t- ]。
A1:
\n\n\n\n\nLorem Ipsum [t- 只是] [t- 印刷]和排版 [c- 工业]的虚拟文本,因此 [d- 有意义]
\n
预期输出是单列中所有出现的情况的数组:
\n\nB1:
\n\n\n\n\n[简单来说就是打印]
\n
或者输出可以是匹配出现的任何分隔符
\n\n\n\n\n简单来说就是| 印刷
\n
尝试使用单个文本进行以下操作[t- ]效果很好,但对于多个实例,它会提取[t-第一次出现的打开和]最后一次出现的打开之间的所有内容:
=REGEXEXTRACT(A1,"\\[t- (.*)\\]")
导致:
\n\n\n\n\n简直就是]![t- 打印的虚拟文本
\n
我还尝试了多个捕获组,但只有当我确定 \xe2\x80\x94 之间只有两个文本实例(每行[t- ]可能有实例)时,这才有效。n此外,它不会将结果输出到一列中的数组,而是分布在多列中:
=regexextract(A1, "(\\[t- (.*)\\]).*(\\[t- (.*)\\])" )
编辑:我收到了几个关于 Regex 的答案,这些答案适用于其他工具/语言(例如 PHP 或 Javascript),但不适用于 Google Sheets。这是Google Sheets 正则表达式语法。
\n\n编辑2:上面的示例字符串在括号内有其他文本,并标有其他字母,例如[c- industry]和[d- it would make]。这些不应包括在内。[t- ]仅应返回短信(带有“t-”)。
与这里使用的技术类似,
REGEXREPLACE全部[t-.*]到(.*) REGEXEXTRACT\Q..\E用于转义其他字符
=REGEXEXTRACT(A1, "\Q"®EXREPLACE(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-