我需要解析这个字符串,在Python中只有一个正则表达式。对于每个组,我需要将值保存在特定字段中。问题是一个或多个参数可能丢失或顺序不同。(即domain 66666 ip nonce
,中间部分丢失)
3249dsf 2013-02-10T06:44:30.666821+00:00 domain constant 66666 sync:[127.0.0.1] Request: pubvalue=kjiduensofksidoposiw&change=09872534&value2=jdmcnhj&counter=232&value3=2&nonce=7896089hujoiuhiuh098h
我需要分配:
time=2013-02-10T06:45:30.666821+00:00
(常量格式)domain=domain
(字符串)code=66666
(整数)ip=127.0.0.1
(字符串)pubvalue=kjiduensofksidoposiw
(定长字符串)nonce=7896089hujoiuhiuh098h
(字符串)编辑
这是一个关于字符串如何变化的示例: 123dsf 2014-01-11T06:49:30.666821+00:00 google constant 12356 sync:[192.168.0.1]请求:pubvalue=fgggggeesidoposiw&nonce=7896089hujoiuh098h
提前谢谢你给我带路。你知道吗
使用一个正则表达式来解析整个字符串可能不是一个好主意。 但我认为解决方法是使用
named groups
(参见:Named groups on Regex Tutorial)。Named groups
可以被(?P<nameofgroup>bla)
捕获例如,您可以将ip与:
只需使用匹配其他内容所需的模式扩展此正则表达式。你知道吗
您还可以通过在组的副词后面放置
?
使组成为可选的,如:(?P<ip>pattern)?
。如果模式无法匹配,dict中的元素将是None
。你知道吗但请注意:只在一个Regex中执行此操作不是一个好主意。它会很慢(因为回溯之类的原因),而且Regex会很长而且维护起来很复杂!你知道吗
相关问题 更多 >
编程相关推荐