使用正则表达式提取多行字符串的一部分

2024-09-28 19:08:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从多行字符串中提取以下行:

eth6.36   Link encap:Ethernet  HWaddr A0:36:9F:5F:24:EE  \r\n          inet addr:36.36.36.10  Bcast:36.36.36.255  Mask:255.255.255.0\r\n          inet6 addr: fe80::a236:9fff:fe5f:24ee/64

当我试图只提取eth6.36 Link encap时,我得到了一个错误。你知道吗

test = 'ifconfig eth6.36\r\neth6.36   Link encap:Ethernet  HWaddr A0:36:9F:5F:24:EE  \r\n          inet addr:36.36.36.10  Bcast:36.36.36.255  Mask:255.255.255.0\r\n          inet6 addr: fe80::a236:9fff:fe5f:24ee/64 Scope:Link\r\n          UP BROADCAST MULTICAST  MTU:9000  Metric:1\r\n          RX packets:0 errors:0 dropped:0 overruns:0 frame:0\r\n          TX packets:62 errors:0 dropped:0 overruns:0 carrier:0\r\n          collisions:0 txqueuelen:0 \r\n          RX bytes:0 (0.0 b)  TX bytes:7004 (6.8 KiB)\r\n\r\n'

match = re.match('(eth6.36\sLink encap:)', test)
print match.groups()
...
AttributeError: 'NoneType' object has no attribute 'groups'

有什么想法吗?你知道吗


Tags: matchlinkmaska0eeaddrinetethernet
3条回答

^{}^{}一起使用。还需要\s的量词。你知道吗

>>> re.findall(r'(eth6.36\s+Link encap:)',test, re.M)
['eth6.36   Link encap:']

如果您确定只有一个结果,请使用search并删除分组括号:

>>> re.search(r'eth6.36\s+Link encap:',test).group()
'eth6.36   Link encap:'

^{}从字符串开头匹配。使用^{},因为它匹配字符串中的任何位置:

>>> match = re.search('(eth6.36\s+Link encap:)', test)
>>> print match.groups()
('eth6.36   Link encap:',)

此外,还必须指定多个空格字符匹配:\s+(注意+)。你知道吗

你想要这个,正则表达式的构造有一个错误

import re
test = 'ifconfig eth6.36\r\neth6.36   Link encap:Ethernet  HWaddr A0:36:9F:5F:24:EE  \r\n          inet addr:36.36.36.10  Bcast:36.36.36.255  Mask:255.255.255.0\r\n          inet6 addr: fe80::a236:9fff:fe5f:24ee/64 Scope:Link\r\n          UP BROADCAST MULTICAST  MTU:9000  Metric:1\r\n          RX packets:0 errors:0 dropped:0 overruns:0 frame:0\r\n          TX packets:62 errors:0 dropped:0 overruns:0 carrier:0\r\n          collisions:0 txqueuelen:0 \r\n          RX bytes:0 (0.0 b)  TX bytes:7004 (6.8 KiB)\r\n\r\n'

match = re.search('(eth6\.36\s*Link encap:)', test)
print match.groups()

输出

('eth6.36   Link encap:',)

相关问题 更多 >