【问题标题】:Regex date parsing正则表达式日期解析
【发布时间】:2018-11-06 06:06:21
【问题描述】:

有人可以帮我用正则表达式来拉

Wed Oct 31 来自下方

Date:   Wed Oct 31 12:55:00 2018 -0500

显然,日志中的日期每天都会发生变化。

【问题讨论】:

  • 不得不问:这是必须解析日期时间输出的情况吗?
  • 如果您的本地时区不是-0500,您可能会在不使用[datetime]::parseexact() 和匹配模式的情况下到达不同的日期。
  • 我有一个文件,其中包含来自 GIT 日志的信息。
    日期:2018 年 10 月 31 日星期三 12:55:00 -0500
    id:202847 Merge branch 'release/ 2.6.0' 进入 release/3.0.0 # 冲突:

    configuration/gsrc/gw/job/PolicyChangeProcess.gs

    我只需要每天提取日志中的任何日期并将其放入变量中,这样我就可以将其添加到电子邮件的正文中。我只是在使用 REGEX 来提取 DAY MONTH #DATE(11 月 6 日星期二)的日期时遇到问题。

  • 对不起 - 新降价,我仍然没有它的窍门。

标签: regex powershell


【解决方案1】:

您要求使用正则表达式,但您的示例已经以时区的形式显示了一个陷阱!

仅使用正则表达式可能会使您在时区偏移将其推至午夜时出错。我建议改为使用[DateTime]::TryParseExact,然后使用日期字符串格式将其转换为您需要的形式:

$Line = "Date:   Wed Oct 31 12:55:00 2018 -0500"

[DateTime] $Date = New-Object DateTime

$Success = [DateTime]::TryParseExact($Line,
    "'Date:   'ddd MMM dd HH':'mm':'ss yyyy zzz",
    [System.Globalization.CultureInfo]::InvariantCulture,
    [System.Globalization.DateTimeStyles]::None,
    [ref] $Date)

if ($Success) {
    $Date.ToString("ddd MMM dd")
}

上面的例子打印出来

Wed Oct 31

【讨论】:

    【解决方案2】:

    这不是一个正则表达式,但它似乎可以完成这项工作...... [grin]

    $FullDateString = 'Date: Wed Oct 31 12:55:00 2018 -0500'
    # the `.Split()` version doesn't take into account random extra spaces in the source
    #    use the next line instead
    #$DateString = $FullDateString.Split(' ')[1..3] -join ' '
    $DateString = ($FullDateString -split '\s+')[1..3] -join ' '
    
    $DateString
    

    输出 = Wed Oct 31

    上面发生了什么……

    • 按空格分割
    • 从结果数组中取出第 2 到第 4 [1..3] 个项目
    • 用“空格”分隔符将它们连接起来

    您可能希望使用更灵活的方法并首先转换为 [datetime] 对象,然后使用您喜欢的格式使用 .ToString()

    【讨论】:

      【解决方案3】:

      看看herehere。有了它,您可以找到一个非常简单的正则表达式来解决您的问题!

      这是我所拥有的:

      $date = 'Date: Wed Oct 31 12:55:00 2018 -0500'
      $date -replace "Date: (\w{3} \w{3} \d{2}) .*", '$1'
      

      我不知道你真正想做什么,所以只要改变你想要的正则表达式;)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多