2014-01-09 51 views
0

的某些领域我有这样的日志行:正则表达式来分析日志文件

[email protected], Portal, qtp724408050-38, com.blabla.search.lib.SearchServiceImpl  .logRequest, [Input request is lookupRequestDTO] 

我需要找到,抓住该电子邮件正则表达式,然后匹配lookupRequestDTO无视之间的一切。

目前我正则表达式抓住整条生产线:

([\w-\.]+)@gmail.com,(.+)lookupRequestDTO 

我怎么没在电子邮件和lookupRequestDTO之间匹配什么吗?

+0

你使用什么语言?添加'' – brandonscript

回答

0

假设你正在使用PCRE(PHP,Perl等,这应该在JavaScript的工作):

([\w-\.][email protected]\.com),(?:.+)(lookupRequestDTO) 

抓捕组1和2中,您将获得:

MATCH 1

  1. [email protected]
  2. lookupRequestDTO

工作例如:http://regex101.com/r/yW9eU3

+0

我只需要整个电子邮件和lookupRequestDTO,然后就可以了。这主要是一个更长的样本行。 – Butcho

+0

然后,那个正则表达式会让你精确的;) – brandonscript

+0

它捕获太多....(?:。+)。它抓取字符串中lookupRequestDTO的最后一个实例。我需要它忽略电子邮件和第一个lookupRequestDTO之间的所有内容,并忽略所有内容。 – Butcho

0

这个怎么样?

([^,]+).*?lookupRequestDTO 

[^,] +匹配的一切,直到第一个逗号所以它应该让你的电子邮件

它假定lookupRequestDTO是用于搜寻的条件。如果它是你想要检索的变量,你可以使用这个:

([^,]+).*?\[Input request is ([^\]]+)