正则表达式,在区间内提取var

时间:2017-03-13 14:44:23

标签: regex msdn dngrep

我对微软的REGEX(正则表达式)有疑问。我在这种模式下写了一个日志文件。

2017-02-20 15:58:45.442 - [XYZ] 155 RADIO_TRAIN_TO_TRACK_INITIATION_COM_SESSION
                                  .VAR1
                                  .VAR2
                                  .VAR3
                                  .VAR4
2017-02-20 15:58:46.432 - [XYZ]   32 RADIO_TRACK_TO_TRAIN_CONFIGURATION_DETERMINATION
                                  .VAR1
                                  .VAR2
                                  .VAR3
                                  .VAR4
                                  .VAR5
                                  .VAR6
2017-02-20 15:58:48.541 - [XYZ] 155 RADIO_TRAIN_TO_TRACK_INITIATION_COM_SESSION
other lines

我的问题是:如何从15:58:45到15:58:46(包括)提取所有文本。 (使用正则表达式)。

我使用15:58:4[5-6]|VAR1表达式,但是这个表达式提取了日志中的所有VAR1,我只提取特定范围内的VAR1。

此致

2 个答案:

答案 0 :(得分:0)

你可以使用这样的正则表达式技巧:

(15:58:45[\s\S]*?15:58:46)

<强> Working demo

或者也使用s单行标志

(?s)(15:58:45.*?15:58:46)

答案 1 :(得分:0)

您可以使用

"columns": [
    {
        data: null,
        bSortable: false,
        render: function (data, type, row) { return '<button type="button" onclick="delete(this);" class="btn btn-default delete" data-id="' + data.id + '"><span class="glyphicon glyphicon-remove" /></button>'; }
    },
  ],

请注意,aFriendlyAssigneeName = aFriendlyAssigneeName.substring(aFriendlyAssigneeName.indexOf(' ')); 复选框为开启

<强>详情:

  • \b15:58:4[5-6].*(?:\r?\n(?!\d{4}-\d{2}-\d).*)* - 字边界
  • Multiline - 一系列文字字符
  • \b - 15:58:4[5-6]
  • 5 - 其余部分
  • 6 - 0+序列:
    • .* - 换行符(CRLF或LF)未跟随4位数,(?:\r?\n(?!\d{4}-\d{2}-\d).*)*,2位数,\r?\n(?!\d{4}-\d{2}-\d)和数字
    • - - 其余部分。

enter image description here

或相同的模式,但更短,效率更低,但可能更具可读性:

-

enter image description here