在Python中,如何在使用字典键作为模式时阻止re.search的部分匹配
在Python中,如果你想用字典的键作为模式来使用re.search,但又想避免部分匹配,该怎么做呢?在这个问题中,我希望不通过遍历字典值中的嵌套列表来解决。我尝试把正则表达式添加到搜索模式中,但结果出现了错误。
部分匹配:
>>> d
{'server': '192.168.1.1, 192.168.1.22, 192.168.1.2'}
>>> e
'192.168.1'
>>> match = re.search(e, d['server'])
>>> if match:
... print match.group()
...
192.168.1
2 个回答
0
在正则表达式中,一个没有反斜杠(在Python中是两个反斜杠\\
)的.
是一个特殊字符,它可以匹配任何一个字符。如果你想找以某个模式开头的IP地址,可以使用192\\.168\\.1\\.\d+
或者类似的写法。另外,如果你能把每个IP地址单独放到一个字符串里,那么你可以使用:
if ip.startswith(e):
# etc.
2
如果你只是想匹配一个IPv4地址,可以使用这个正则表达式 192\.168\.1\.\d+
。
>>> import re
>>> text = '192.168.1.2, 192.168.11.9, 192.168.1.255, 10.14.1.1'
>>> regex = '192\.168\.1\.\d+'
>>> re.search(regex, text).group()
'192.168.1.2'
>>> re.findall(regex, text)
['192.168.1.2', '192.168.1.255']