Google表格正则提取第n个日期字符串

Posted

技术标签:

【中文标题】Google表格正则提取第n个日期字符串【英文标题】:Google Sheets regexextract nth date string 【发布时间】:2022-01-24 01:39:05 【问题描述】:

这是我所拥有的:

=regextract(A1,"(\d+/\d+/\d+)3")

这将返回第一个日期字符串:

正则表达式(A:A,"(\d+/\d+/\d+)1")

但这会返回 N/A:

正则表达式(A:A,"(\d+/\d+/\d+)3")

目标:正则表达式提取正则表达式以返回匹配格式(1 或 2 位)/(1 或 2 位)/(2 位)的第 n 个日期字符串。如示例字符串所示,字符串中有多个 char(10) 中断:

1234 文本 文本 123-456-7890 22 年 1 月 14 日星期五 上午 9:00,下午 12:00 22 年 10 月 18 日星期二 上午 10:30,下午 4:30,A 2506 文本 文本 123-456-7890 22 年 11 月 1 日星期二 上午 9:00,下午 4:30 22 年 1 月 19 日星期三 上午 9:00,下午 4:30

因此,对于本示例,我希望能够通过选择第 n 个值(即 1、2、3)返回 1/14/22 或 10/18/22 或 11/1/22 或 1/19/22,或 4. 如果是 3 个字母的缩写星期几,例如也可以在日期结果之前返回“Wed”,如示例中所示,该正则表达式将更有帮助。感谢您阅读并提前提供任何帮助。很抱歉,但在我发布问题后似乎没有显示 char(10) 中断 - 我不知道如何解决这个问题。在缩写的工作日之前和搜索的日期结果之后有一个 char(10) 中断,例如“22 年 1 月 14 日星期五”之前和之后。

【问题讨论】:

你能至少证明你对使用正则表达式匹配数字的理解吗? 是的,当然,抱歉。我忘了包括我所拥有的: =regexextract(A1,"(\d+/\d+/\d+)3") 。我还在对原始问题的编辑中添加了它。 您的帖子没有包含示例字符串的格式。所以我们不知道 CHAR(10) 断点在哪里。 感谢您的回复,埃里克。我曾提到我不知道如何进行格式化。我尝试提取的所有日期字符串都包含格式 RE char(10),例如:=char(10)&"Tue 10/18/22"&char(10) 【参考方案1】:

我想通了,替换括号中的数字返回日期字符串的第n次匹配:

=REGEXEXTRACT(A1,"(?:.*?(\d+/\d+/\d+))3")

现在我会担心添加缩写的日期。感谢大家的贡献。

...以及缩写的日期:

=REGEXEXTRACT(A1,"(?:.*?([A-Z][a-z]2 \d+/\d+/\d+))3")

再次感谢所有为帮助寻找解决方案做出回应的人。

【讨论】:

【参考方案2】:

根据您提供的文字,如果您在文字中有4个日期,有或没有车(10),试试

=regexextract(A1,"([A-Z][a-z]2 [0-9]1,2/[0-9]1,2/[0-9]2).*([A-Z][a-z]2 [0-9]1,2/[0-9]1,2/[0-9]2).*([A-Z][a-z]2 [0-9]1,2/[0-9]1,2/[0-9]2).*([A-Z][a-z]2 [0-9]1,2/[0-9]1,2/[0-9]2)")

【讨论】:

迈克,非常感谢您的回复。我看到返回的第一个字符串被返回,但是,我如何返回第 n 个字符串?例如。如果我想要第三个案例,结果将是:Tue 11/1/22

以上是关于Google表格正则提取第n个日期字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何使用正则表达式从字符串中提取第 n 个 URL?

java 正则表达式 字符串中提取日期 例如:某一节目第20140502期

批处理正则表达式怎样替换第二个指定字符

正则表达式匹配第N处

需要正则表达式来提取字符串中的第 5 到第 8 个字符

01 Excel 如何从身份证中提取日期