2013-03-20 68 views
1

我對正則表達式很陌生,但我已經完成了我的研究,足以將它們放在一起。不幸的是我碰到了一塊。我將在PHP preg_match中使用這個正則表達式來解析幾個服務器日誌並返回特定的字符串,如「My String」中的示例。正則表達式在日誌文件中查找字符串並將字符串分成若干部分

我正則表達式:

\b([0-9\:]+)\s\"ANTIHAKE\sFOUND:\s+(.*?)\s\(([^)]+)\)\s+REASON:\s+(.*?)\s+\(([^)]+)\)" 

我的字符串:

15:34:51 "ANTIHAKE FOUND: Kevin (106534790) REASON: Global Var (Monky_hax_toggled)" 

最終我的目標是要拉出共有5個變量:
時間 - 「十五時34分51秒」
名稱 - 「Kevin」
UID - 「106534790」
原因 - 「Global Var」
特定原因 - 「Monky_hax_toggled」

我遇到的一個特定問題是捕獲原因。我似乎無法弄清楚如何捕獲「全局變量」作爲一個字符串,包括空白。有人會幫助我嗎?

謝謝!
喬恩

+0

我只想補充一點,所有的5個變量將是動態的。 「 」「ANTIHAKE FOUND:」和「REASON:」將始終是靜態的,時間格式也一樣 – 2013-03-20 08:39:52

+0

您的正則表達式已經正常工作了,請參閱http://viper-7.com/WcgfQn – 2013-03-20 08:40:48

+0

我必須爲太長了,謝謝澄清,太快了,反應也很快!你太棒了。 – 2013-03-20 08:48:02

回答

0

只刪除後,\ S +似乎確定我 - :

\b([0-9\:]+)\s\"ANTIHAKE\sFOUND:\s+(.*?)\s\(([^)]+)\)\s+REASON:\s+(.*?)\(([^)]+)\) 
+0

你是絕對正確的,非常感謝! – 2013-03-20 08:50:34

0

試試這個:

([0-9]{2}:[0-9]{2}:[0-9]{2})\s+"ANTIHAKE FOUND:\s+([^(]+)\s+\(([0-9]+)\)\s+REASON:\s+([^(]+)\s+\(([^)]+)\)" 

請記住,正則表達式爲您量身打造的例子。 (。*?)

+0

謝謝,但是根據神祕的說法,我的正則表達式已經在工作了,謝謝你的超級快速反應。 – 2013-03-20 08:49:06

相關問題