首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex,提取区间内的var

Regex,提取区间内的var
EN

Stack Overflow用户
提问于 2017-03-13 14:44:23
回答 2查看 83关注 0票数 1

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

代码语言:javascript
复制
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 (包括)提取所有文本。(使用regex)。

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

问候

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-13 15:13:02

你可以用

代码语言:javascript
复制
\b15:58:4[5-6].*(?:\r?\n(?!\d{4}-\d{2}-\d).*)*

注意,Multiline复选框是ON

详细信息

  • \b -一个单词边界
  • 15:58:4 -一个文字字符的序列
  • [5-6] -56
  • .* -行的其余部分
  • (?:\r?\n(?!\d{4}-\d{2}-\d).*)* - 0+序列:
    • \r?\n(?!\d{4}-\d{2}-\d) -断线(CRLF或LF)后面没有4位,-,2位,-和1位。
    • .* -剩下的部分。

或者相同的模式,但是更短一些,效率更低,但可能更容易读懂:

代码语言:javascript
复制
\b15:58:4[5-6].*?(?=\d{4}-\d{2}-\d|$)

票数 0
EN

Stack Overflow用户

发布于 2017-03-13 14:58:16

您可以使用这样的regex技巧:

代码语言:javascript
复制
(15:58:45[\s\S]*?15:58:46)

工作演示

也可以使用s单行标志。

代码语言:javascript
复制
(?s)(15:58:45.*?15:58:46)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42766469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档