python 从正则表达式中获取子字符串
python get substring from regex
我想从字符串中提取一个符合特定正则表达式的子字符串。正则表达式是:
(\[\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
我只想从此字符串中提取字节数(只是数字)。我想用 re.search
来做这件事,但我不确定这是否可行。执行此操作的最干净、最高效的方法是什么?
使用 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))
第一组匹配[4 bytes]
,第二组只匹配4
.
输出:
4
4
1
我想从字符串中提取一个符合特定正则表达式的子字符串。正则表达式是:
(\[\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
我只想从此字符串中提取字节数(只是数字)。我想用 re.search
来做这件事,但我不确定这是否可行。执行此操作的最干净、最高效的方法是什么?
使用 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))
第一组匹配[4 bytes]
,第二组只匹配4
.
输出:
4
4
1