簡體   English   中英

如何在python中使用正則表達式獲取兩個特定字符之間的第一個整數?

[英]How to get first integer between two specific characters with regex in Python?

我正在解析一些日志文件,需要為“大小”參數提取一個整數。

字符串(部分)看起來像這樣

 "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+)")

請參閱帶有字符串1regex演示帶有字符串2的另一個演示

細節

  • ^ -字符串的開頭
  • [^:]* -0以外的其他字符:
  • : -一個-
  • (\\d+) -捕獲組1:一位或多位數字

參見Python演示

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM