Regex 正则表达式:捕获数字字符后的所有内容,并在特定字符处停止

Regex 正则表达式:捕获数字字符后的所有内容,并在特定字符处停止,regex,Regex,我的留言[06/Oct/2020:17:44:24+0200] 我想要的信息 日期为2020年10月6日 时间17:44:24 日期及其返回的我的模式^[^::::*[06/Oct/2020 模式无法删除日期的[字符正则表达式: (?<=\[)([^:]*) 组\1包含日期,组\2包含时间 测试。日期的正则表达式: (?<=\[)([^:]*) 组\1包含日期,组\2包含时间 测试。使用^[^::::*重复匹配除:之外的任何字符,因此也将匹配前导的[ 您可以使用2个捕获组,并指定

我的留言
[06/Oct/2020:17:44:24+0200]

我想要的信息

  • 日期为2020年10月6日
  • 时间
    17:44:24
  • 日期及其返回的我的模式
    ^[^::::*
    [06/Oct/2020

    模式无法删除日期的
    [
    字符正则表达式:

    (?<=\[)([^:]*)
    
    \1
    包含日期,组
    \2
    包含时间

    测试。

    日期的正则表达式:

    (?<=\[)([^:]*)
    
    \1
    包含日期,组
    \2
    包含时间


    测试。

    使用
    ^[^::::*
    重复匹配除
    之外的任何字符,因此也将匹配前导的
    [

    您可以使用2个捕获组,并指定与日期和时间相关的模式,使匹配更加具体

    如果希望匹配位于字符串的开头,可以在模式前面加上
    ^

    \[((?:0[1-9]|[12]\d|3[01])/[A-Z][a-z]{2,}/(?:19|20)\d{2}):((?:[0-1]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])[^\][]*\]
    
    • \[
      匹配
      [
    • Capturegroup 1
      • (?:0[1-9]|[12]\d |[3[01])/[A-Z][A-Z]{2,}/(?:19 | 20)\d{2}
        匹配类似日期的模式
    • 关闭第1组
    • 匹配但不捕获
    • 捕获第2组
      • (?:[0-1]?[0-9]| 2[0-3]):[0-5][0-9]:[0-5][0-9]
        匹配类似时间的模式
    • 关闭第2组
    • [^\][*\]
      匹配除
      [
      ]
      之外的任何字符,直到结束
      ]

    使用
    ^[^::::]*
    重复匹配除
    之外的任何字符,因此也将匹配前导的
    [

    您可以使用2个捕获组,并指定与日期和时间相关的模式,使匹配更加具体

    如果希望匹配位于字符串的开头,可以在模式前面加上
    ^

    \[((?:0[1-9]|[12]\d|3[01])/[A-Z][a-z]{2,}/(?:19|20)\d{2}):((?:[0-1]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])[^\][]*\]
    
    • \[
      匹配
      [
    • Capturegroup 1
      • (?:0[1-9]|[12]\d |[3[01])/[A-Z][A-Z]{2,}/(?:19 | 20)\d{2}
        匹配类似日期的模式
    • 关闭第1组
    • 匹配但不捕获
    • 捕获第2组
      • (?:[0-1]?[0-9]| 2[0-3]):[0-5][0-9]:[0-5][0-9]
        匹配类似时间的模式
    • 关闭第2组
    • [^\][*\]
      匹配除
      [
      ]
      之外的任何字符,直到结束
      ]

    什么是正则表达式风格?@dawg不太确定,但我将使用Logstash中的模式,Grok filterIn PCRE,您可以使用在大多数现代正则表达式风格中工作的
    \[([^:]*):([^]*)
    。您需要匹配
    [
    为了跳过它。为了匹配它,你需要避开它,这是你的问题。@BTH.S3有与logstash和grok相关的标记。@BTH.S3给出的答案有用吗?什么正则表达式味道?@dawg不是很确定,但我将使用logstash中的模式,grok filterIn PCRE,你可以使用
    \[([^:]*):([^]*)
    适用于大多数现代正则表达式。您需要匹配
    [
    以跳过它。要匹配它,您需要避开它,这是您的问题。@BTH.S3有与logstash和grok相关的标签。@BTH.S3给出的答案有用吗?