如何使用正则表达式提取部分字符串

Posted

技术标签:

【中文标题】如何使用正则表达式提取部分字符串【英文标题】:How to extract part of string using regex 【发布时间】:2021-12-30 01:17:37 【问题描述】:

我正在尝试提取字符串的一部分作为日期时间戳

示例字符串:

Upgrade starting on Mon Aug 9 06:46:00 UTC 2021 with ...

提取的值应该是:

Mon Aug 9 06:46:00 UTC 2021

我尝试应用以下正则表达式来提取时间戳:

(\d2:\d2:\d2)

我怎样才能同时提取日月和年。

【问题讨论】:

^(Upgrade starting on )(\S3) (\S3) (\d1,2) (\d2:\d2:\d2) (\S3) (\d4)(.*) regex101.com/r/g4AHf4/1 这应该可以帮助您顺利上路 不包括第一部分:(?<=Upgrade starting on )(\S3) (\S3) (\d1,2) (\d2:\d2:\d2) (\S3) (\d4)(.*) 如果字符串始终具有相同的开始和结束,我会提取“升级开始于”和“使用...”之间的所有内容并将其提供给日期解析器 【参考方案1】:

使用正则表达式从原始字符串中提取部分字符串,以下是完整代码

package main

import (
    "fmt"
    "regexp"
)

func main() 

    // extract part of string using regex
    str := "Upgrade starting on Mon Aug 9 06:46:00 UTC 2021 with ..."

    // extract string "Mon Aug 9 06:46:00 UTC 2021" using regex
    re := regexp.MustCompile(`(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d1,2 \d2:\d2:\d2 (\S3) \d4`)
    t := re.FindString(str)
    fmt.Println(t)



【讨论】:

UTC 部分应注意查看其他可能性

以上是关于如何使用正则表达式提取部分字符串的主要内容,如果未能解决你的问题,请参考以下文章

C++ 正则表达式提取子字符串

使用正则表达式提取部分字符串的 Hive 查询

用于提取要匹配的某些部分的正则表达式

UE中如何使用正则替换行中部分字符串

正则表达式实战

Python正则表达式提取字符串的一部分