Php 用逗号解析正则表达式
我正在尝试解析下面的日志文件;然而,我还是有点纠结于如何用逗号解析它Php 用逗号解析正则表达式,php,regex,pcre,Php,Regex,Pcre,我正在尝试解析下面的日志文件;然而,我还是有点纠结于如何用逗号解析它 NOTICE Failed-Attempt: EAP session timed out, ACSVersion=acs-1.6.0.10-B.153.x86_64, ConfigVersionId=100, UserName=username, NAS-IP-Address=10.10.10.10, Calling-Station-ID=0123.4a56.78b9, NAS-Port-Id=123, AcsSessionI
NOTICE Failed-Attempt: EAP session timed out, ACSVersion=acs-1.6.0.10-B.153.x86_64, ConfigVersionId=100, UserName=username, NAS-IP-Address=10.10.10.10, Calling-Station-ID=0123.4a56.78b9, NAS-Port-Id=123, AcsSessionID=host/123/321, AuthenticationIdentityStore=AD1, AuthenticationMethod=AuthMethod, SelectedAccessService=Wireless, DetailedInfo=Invalid username or password specified\, Retry is allowed, FailureReason=24421
我尝试了以下解析方法,但是它没有返回我想要的结果:(?:[^,]+)
理想的目标是满足以下条件:
NOTICE Failed-Attempt: EAP session timed out
ACSVersion=acs-1.6.0.10-B.153.x86_64
UserName=username
NAS-IP-Address=10.10.10.10
Calling-Station-ID=0123.4a56.78b9
NAS-Port-Id=123
AcsSessionID=host/123/321
AuthenticationIdentityStore=AD1
AuthenticationMethod=AuthMethod
SelectedAccessService=Wireless
DetailedInfo=Invalid username or password specified, Retry is allowed
FailureReason=24421
您可以匹配除逗号和反斜杠以外的任何1+字符,或者使用
/(?:[^\\,]|\\.)+/s
在PHP中:
$regex = '~(?:[^\\,]|\\.)+~s';
$regex = '/(?=[^,\s])[^\\\\,]*(?:\\\\.[^\\\\,]*)*/s';
看
详细信息
-启动非捕获组:(?:
-除[^\\,]
和逗号以外的任何字符\
-或|
-a\.
后跟任何字符,包括换行符(由于\
修饰符)s
-结束分组,重复1次或更多次)+
$regex = '~(?:[^\\,]|\\.)+~s';
$regex = '/(?=[^,\s])[^\\\\,]*(?:\\\\.[^\\\\,]*)*/s';
看
(?=[^,\s])
正向前瞻要求右边的字符必须是除、
和空格以外的任何字符,[^\\,]*(?:\.[^\\,]*)*
是上述正则表达式的展开等价项。$exploddelist=explode(',,$message)
我想preg\u split('~(?Hi@WiktorStribiżew,是否可以纯粹在正则表达式中执行此操作?您的意思是在preg\u match\u all
中使用正则表达式?请尝试“~(?:[^\\\,]\124\\\)+~s'
。注意四个反斜杠。不知道单词边界是否适用于你,我暂时删除了它们。嗨@WiktorStribiżew,它似乎捕捉到了指定和重试之间的逗号。谢谢Wiktor,这正是我要找的!