Php 正则表达式在日志文件中查找字符串,并将字符串分成若干部分

Php 正则表达式在日志文件中查找字符串,并将字符串分成若干部分,php,regex,whitespace,Php,Regex,Whitespace,我对regex很陌生,但我已经做了足够多的研究来总结这一点。不幸的是我撞到了一个街区。我将使用这个带有PHP preg_匹配的正则表达式来解析一些服务器日志,并返回特定字符串,如我字符串中的示例 我的正则表达式: \b([0-9\:]+)\s\"ANTIHAKE\sFOUND:\s+(.*?)\s\(([^)]+)\)\s+REASON:\s+(.*?)\s+\(([^)]+)\)" 我的字符串: 15:34:51 "ANTIHAKE FOUND: Kevin (106534790)

我对regex很陌生,但我已经做了足够多的研究来总结这一点。不幸的是我撞到了一个街区。我将使用这个带有PHP preg_匹配的正则表达式来解析一些服务器日志,并返回特定字符串,如我字符串中的示例

我的正则表达式:

\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个变量: 时间-15:34:51 姓名-凯文 UID-106534790 原因-全局Var 具体原因-Monky_hax_切换

我遇到的一个具体问题是捕捉原因。我似乎不知道如何将全局变量捕获为一个字符串,包括空格。有人能帮我吗

谢谢! 乔恩

试试这个:

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

请记住,regexp是根据您的示例定制的。

只是在。*之后删除\s+?对我来说似乎没问题-:

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

让我补充一下,所有5个变量都是动态的。ANTIHAKE发现:原因:将始终是静态的,时间格式也是如此。您的正则表达式已经可以正常工作了。看这里,我一定是起床太久了,谢谢你的澄清。惊人的快速反应太!你太棒了。谢谢,但根据神秘的说法,我的正则表达式已经开始工作了。谢谢你的快速回复。你完全正确。谢谢!