2015-05-27 47 views
0

我正在处理正则表达式问题,并且在尝试匹配特定标记之间的文本时遇到了一些问题。下面是一个正则表达式测试器,其中包含我迄今为止完成的一些测试使用正则表达式来匹配日志文件

https://regex101.com/r/gE8uQ1/1

我想选择哪个后显示的查询文本中所有“的声明:”和\ nTIMESTAMP之前。我用\ n \ d {4} -d {2} -d {2}来表示时间戳,但它不会选择整个查询。这是为什么发生?是因为我的修饰符吗?

回答

1
(?<=statement:)([ _\-|0-9,:;\.=A-Za-z\(\)"\n\t']+?)(?=(?:\d{4}-\d{2}-\d{2}|$)) 

尝试this.See演示。只需将您的negative lookahead更改为positive lookahead并将quantifier添加到character class即可。

查看演示。

https://regex101.com/r/gE8uQ1/5

+0

你错过了在最后一个'$':d –

+0

@karthikmanchala啊感谢名单...........错过了它:) – vks

0

您可以使用gs以下(因为你querys具有不通过.匹配的新行)修饰符:

(?<=statement:)([ _\-|0-9,:;\.=A-Za-z\(\)"\n\t'].+?)(?=\d{4}-\d{2}-\d{2}|$) 
               ^^    ^

DEMO