无法使用perl正则表达式解析句子中的不同参数

时间:2017-03-13 05:30:18

标签: regex perl

我有两个字符串

02/22/2017 10:15:19.312 AM: Information : Response Code : 98
02/22/2017 10:15:19.312 AM: Information : Response Code : 99 : TransactionID : 132

我需要提取以下参数 -

  1. 时间戳
  2. 响应代码
  3. TransactionID(如果存在于字符串中)
  4. 我正在使用以下模式搜索

    /^(\d{2}\/\d{2}\/\d{4})(.*\bResponse Code\b)(.*\b : \b)(\d+)(.*\bTransactionID\b)?(.*\b : \b)?(\d+)?/
    

    无法提取TransactionID。你能告诉我正则表达式中的错误吗?

1 个答案:

答案 0 :(得分:1)

当您在正则表达式中使用贪婪的.*时,它与最后:匹配。

你需要让它变得非贪婪并删除不需要的群组:

/^(\d{2}\/\d{2}\/\d{4}).*\bResponse Code\b.*?\b : \b\d+(?:.*\bTransactionID\b.* : \b)?(\d+)?/

RegEx Demo