python从正则表达式获取子串

pid*_*gey 1 python regex substring

我想从字符串中提取子字符串,这符合某个正则表达式.正则表达式是:

(\[\s*(\d)+ byte(s)?\s*\](\s*|\d|[A-F]|[a-f])+)

这实际上意味着所有这些字符串都被接受:

[4 bytes] 66 74 79 70 33 67 70 35
[ 4 bytes ] 66 74 79 70 33 67 70 35
[1 byte] 66 74 79 70 33 67 70 35
Run Code Online (Sandbox Code Playgroud)

我想从这个字符串中只提取字节数(只是数字).我想过这样做re.search,但我不确定这是否会奏效.这样做最干净,最高效的方法是什么?

小智 6

使用match.group让您的正则表达式定义组:

import re

s = """[4 bytes] 66 74 79 70 33 67 70 35
[ 4 bytes ] 66 74 79 70 33 67 70 35
[1 byte] 66 74 79 70 33 67 70 35"""
r = re.compile(r"(\[\s*(\d)+ byte(s)?\s*\](\s*|\d|[A-F]|[a-f])+)")

for line in s.split("\n"):
    m = r.match(line)
    if m:
        print(m.group(2))
Run Code Online (Sandbox Code Playgroud)

第一组匹配[4 bytes],仅次于第二组4.

输出:

4
4
1
Run Code Online (Sandbox Code Playgroud)