gpt4 book ai didi

python - 如何在Python中用一个正则表达式解析这个字符串

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:59 24 4
gpt4 key购买 nike

我需要用Python中的一个正则表达式来解析这个字符串。对于每个组,我需要将值保存在特定字段中。 问题在于一个或多个参数可能丢失或顺序不同。(即domain 66666 ip nonce,中间部分丢失)

3249dsf 2013-02-10T06:44:30.666821+00:00 域常量 66666 同步:[127.0.0.1] 请求:pubvalue=kjiduensofksidoposiw&change=09872534&value2=jdmcnhj&counter=232&value3=2&nonce=789 6089hujoiuhiuh098h

我需要分配:

  • 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 常量 12356 同步:[192.168.0.1] 请求:pubvalue=fggggggeesidoposiw&nonce=7896089hujoiuhiuh098h

预先感谢您为我指明了道路。

最佳答案

使用一个正则表达式来解析整个字符串可能不是一个好主意。但我认为解决方案是使用 named groups (参见: Named groups on Regex TutorialNamed groups可以通过 (?P<nameofgroup>bla) 捕获

因此您可以将 ip 与以下内容进行匹配:

import re
str = "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"
print re.search("\[(?P<ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\]", str).groupdict()

只需使用您需要的模式扩展此正则表达式即可匹配其他内容。

您可以通过放置 ? 来使组可选在组的括号之后,例如:(?P<ip>pattern)? 。如果模式无法匹配,则字典中的元素将为 None .

但请注意:仅在一个正则表达式中执行此操作不是一个好主意。它会很慢(因为回溯之类的),而且正则表达式会很长而且维护起来很复杂!

关于python - 如何在Python中用一个正则表达式解析这个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14998399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com