2014-01-09 56 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 ([^\]]+)