【问题标题】:Is there a way to REGEX this information.有没有办法对这些信息进行正则表达式。
【发布时间】:2011-10-22 05:13:56
【问题描述】:

我正在尝试使用单个正则表达式从下面的行中检索日期。下面字符串中的日期和时间可以更改。

My Birthday is: Thu Jan 12 23:59:59 GMT 2012.

如果我使用这个正则表达式

(?<=My Birthday is: ).+?(?=\.)

它会给我这个。

Thu Jan 12 23:59:59 GMT 2012

但我正在寻找这个..

Thu Jan 12 2012

我将如何使用适用于 .NET 的单个 Regex 语句来实现这一目标

【问题讨论】:

  • 如果您可以控制此文本的生成,请考虑使用具有所需格式的日期格式化程序。如果您必须按照给定的字符串处理,您可以正则表达式将两个部分放在一起,或者取出您已经提取的字符串并从中间删除时间部分。
  • 谢谢雷,我按照你的建议应用了这个日期格式化程序,“ddd MMM dd HH:mm:ss GMT yyyy”,效果很好。

标签: .net regex regex-negation


【解决方案1】:

你要的正则表达式如下所示:

^My Birthday is: (\w{3} \w{3} \d\d) \d\d:\d\d:\d\d \w{3}( \d{4})\.$

然后,您只需通过引用它们各自的索引来加入两个捕获的组。我不知道 .NET,但它在 JavaScript 中看起来像这样:

text.replace(/(\w{3} \w{3} \d\d) \d\d:\d\d:\d\d \w{3}( \d{4})\.$/, '$1$2')

您可能需要在正则表达式中更改第一个 \d\d,具体取决于 1–9 的显示方式。如果它们显示为 1-9(而不是 01-09),则需要改用 \d\d?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-29
    • 2011-12-06
    • 2019-06-28
    • 2021-08-28
    • 2011-04-15
    • 2013-02-26
    • 2014-02-04
    • 2012-05-09
    相关资源
    最近更新 更多