RegEx从Google表格单元格中的字符串获取日期格式的最后一个匹配项

时间:2020-05-29 18:49:20

标签: regex google-sheets re2

我的目标是使用Google表格中的正则表达式提取日期字符串和以下字符(表格功能:regexextract),其中字符串是单元格的最后一行,并以日期格式“ yyyy-DD-MM”开头,后跟“:”。 因此,我目前拥有的RegExpression看起来像: \d{4}-\d{2}-\d{2}:.+

这很好用,但它返回第一个匹配项。相反,我想从单元格的末尾开始,并在有多个日期字符串时提取最后一个匹配项。这是因为内容在单元格中按日期升序存储。

示例单元格

2020-05-20: Status update blah blah
2020-05-27: PO Issued blah blah

请求的结果: 我希望最终结果是一个以日期开头的字符串,以及最后一个结果为“ 2020-05-27:PO Issued blah blah”的字符。但是,我总是得到上面示例中的第一个匹配项:“ 2020-05-20:状态更新等等”

我也在Google表格中使用regexextract()做到了这一点,它不会在regex上有所作为,而只是想提及它。

编辑:我发现Sheets正在使用RE2,所以我认为确实有所作为。

1 个答案:

答案 0 :(得分:1)

您可以使用

=REGEXEXTRACT(A1, "(?m)^\d{4}-\d{2}-\d{2}:.*\z")

请参见RE2 regex demo和Google表格截图:

enter image description here

(?m)^\d{4}-\d{2}-\d{2}:.*\z正则表达式匹配

  • (?m)-一种MULTILINE修饰符,它使^匹配行的开头,$匹配行的结尾
  • ^-一行的开头
  • \d{4}-\d{2}-\d{2}:.*-4位数字,-,2位数字,-,2位数字,:,然后其余行,因为.不匹配默认情况下,换行符
  • \z-字符串的结尾(不受(?m)修饰符的影响)。

请注意,(?s).*\n(\d{4}-\d{2}-\d{2}:.*) I suggested in the top comment below the question将匹配从日期开始的最后,请参见regex demo