我对正则表达式很新,但我已经完成了足够多的研究。不幸的是我遇到了障碍。我将使用这个正则表达式与PHP preg_match来解析一些服务器日志并返回特定字符串,如“我的字符串”中的示例。
My Regex:
\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”
理由 - “全球变种”
具体原因 - “Monky_hax_toggled”
我遇到的一个具体问题是抓住原因。我似乎无法弄清楚如何捕获“全局变量”作为一个字符串,包括空格。有人会帮助我吗?
谢谢!
乔恩
答案 0 :(得分:0)
试试这个:
([0-9]{2}:[0-9]{2}:[0-9]{2})\s+"ANTIHAKE FOUND:\s+([^(]+)\s+\(([0-9]+)\)\s+REASON:\s+([^(]+)\s+\(([^)]+)\)"
请记住,regexp是根据您的示例量身定制的。
答案 1 :(得分:0)
只需删除(。*?)之后的\ s +就好了 - :
\b([0-9\:]+)\s\"ANTIHAKE\sFOUND:\s+(.*?)\s\(([^)]+)\)\s+REASON:\s+(.*?)\(([^)]+)\)