gpt4 book ai didi

python - 如何在Python中使用正则表达式获取两个特定字符之间的第一个整数?

转载 作者:行者123 更新时间:2023-12-01 01:04:36 25 4
gpt4 key购买 nike

我正在解析一些日志文件,需要提取“大小”参数的整数。

字符串(它的一部分)看起来像这样

 "asdasdasd\\\size\\x22:22\x0A23232d:123123123\x0A2"  

我想获取“:”和“\”之间的第一个整数。那是 22。不是 123123123。

我尝试过以下代码

 p = re.compile("[\:](\d+)[\D]")
s = "asdasdasd\\size\\x22:22\x0A23232d:123123123\x0A2"
p.findall(s)[0]

output = '22'

但是,如果“:”和“\”第一次出现之间没有数字,并且希望代码返回 None 或 0。现在,如果模式如下所示,代码将返回“123123123”:

"asdasdasd\\size\\x22:\x0A23232d:123123123\x0A2"

实现这一目标的最佳方法是什么?

最佳答案

您可以使用具有以下模式的re.search:

p = re.compile(r"^[^:]*:(\d+)")

请参阅regex demo with String 1另一个demo with String 2 .

详细信息

  • ^ - 字符串开头
  • [^:]* - 除 : 之外的 0+ 个字符
  • : - 一个 -
  • (\d+) - 捕获组 1:一位或多位数字

请参阅Python demo :

import re
strs = ["asdasdasd\\size\\x22:\x0A23232d:123123123\x0A2", "asdasdasd\\\size\\x22:22\x0A23232d:123123123\x0A2"]
p = re.compile(r"^[^:]*:(\d+)")
for s in strs:
result = ""
m = p.search(s)
if m:
result = m.group(1)
else:
result = None
print(result)

输出:

None
22

关于python - 如何在Python中使用正则表达式获取两个特定字符之间的第一个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55493932/

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