问:找谷歌正则表达式表捕获[t- ]
并输出到相邻列单元之间的字符串的所有实例作为一个数组,或火柴之间的一些其他的分隔符。
对于下面的字符串,我试图提取[t- ]
之间的文本的所有实例。
A1:
Lorem存有[叔简直]中的[T-打印]的虚拟文本排版[C-行业],所以[D-它将使]感觉,
预期输出是在单个列中所有出现的数组:
乙1:
[简直是,印刷]
或输出可能是比赛出现任何分隔符
简直|印花
试图用一个单一的文本内[t- ]
工作正常,但多个实例它提取第一次出现最后一次出现的[t-
开放]
之间的一切如下:
=REGEXEXTRACT(A1,"\[t- (.*)\]")
导致:
简直]!在[叔印刷的虚拟文本
我也试过多种捕获组,但如果我敢肯定有间[t- ]
-有可能是每行n
情况下只有两种文本的情况下,这只是工作。此外,它不输出结果在一列的arrary,但在多列之间传播:
=regexextract(A1, "(\[t- (.*)\]).*(\[t- (.*)\])" )
编辑:我已经收到了与正则表达式一对夫妇的答案,对于其他工具/语言(例如,PHP或JavaScript),而不是谷歌表的工作原理。这里的Google Sheets Regex Syntax。
编辑2:将上述样品串具有内部标有其他字母,例如,[c- industry]
和[d- it would make]
括号其他文本。这些不应该被包括在内。只有在[t- ]
发短信(以“T-”)应返回。
类似的技术用于here,
REGEXREPLACE
所有[t-.*]
到(.*)
REGEXEXTRACT
提供所产生的表达\Q..\E
用于转义其他字符
=REGEXEXTRACT(A1, "\Q"®EXREPLACE(A1,"\[t-[^]]+\]","\\E(.*)\\Q")&"\E")
另外,只需REGEXREPLACE
界定,
=REGEXREPLACE(A1,"(^|\])(.*?)(\[t-|$)","$1|$3")
=SPLIT(REGEXREPLACE(A1,"(^|\])(.*?)(\[t-|$)","$1|$3"),"|")
替换所有字符.*
那
]
启动或串^
的开始[t-
或字符串的结尾结束$
与]|[t-
防弹的解决方案:
="["&JOIN(", ", ARRAYFORMULA(REGEXREPLACE(
QUERY(SPLIT(TRANSPOSE(SPLIT(A1, "[")), "]"),
"select Col1 where Col1 contains 't- '", 0),
"t- ", "")))&"]"
=JOIN(" | ", ARRAYFORMULA(REGEXREPLACE(
QUERY(SPLIT(TRANSPOSE(SPLIT(A1, "[")), "]"),
"select Col1 where Col1 contains 't- '", 0),
"t- ", "")))