首页 文章

谷歌表格正则表达式找到最左边的交替匹配[重复]

提问于
浏览
0

这个问题在这里已有答案:

如何调整此正则表达式,只选择一个替换短语中的一个匹配项 . 我正在使用Google表格REGEXEXTRACT函数来收集字符串的一部分 . 我通过使用交替几乎涵盖了所有条件 - 除了一个,其中源字符串包含多个交替匹配 .

一个简单的测试例子,在B1:B4我有 .

=REGEXEXTRACT(A1,"([^\d]*)\s?(?:vs|bc)")
=REGEXEXTRACT(A2,"([^\d]*)\s?(?:vs|bc)")
=REGEXEXTRACT(A3,"([^\d]*)\s?(?:bc|vs)")
=REGEXEXTRACT(A4,"([^\d]*)\s?(?:bc|vs)")

(注意B3和B4中反转的bc | vs交替)

在A1:A4我有

oiu tgi vs ghj bc fgh
de nbv the vs ghj fgh
ghj YHTF bc fgh
iii iii kji bc fgh vs oiu

我想要的结果是B1:B4

oiu tgi
de nbv the
ghj YHTF
iii iii kji

问题是引擎(非常正确)匹配两个交替短语并提取源字符串中最后一个匹配(最右边)左边的所有内容 . 不是我想要的 . 交替匹配之间的各种文本长度是随机的 . 我的整个方法是错的吗?

我在B1:B4中得到的结果是:

oiu tgi vs ghj 
de nbv the 
ghj YHTF 
iii iii kji bc fgh

由于实际数据中的行数是数千,我显然想要所有变体的通用正则表达式 .

1 回答

  • 0

    看看这是否有效

    =ArrayFormula(regexreplace(A1:A4, "(\s(?:bc|vs).+$)",))
    

相关问题