一个要求我为 IP 地址创建正则表达式的个人项目导致我陷入了以下僵局。
pattern = r'123\.145\.167\.[0-9]{1,2}'
source = "123.145.167.0, 123.145.167.99, 123.145.167.100"
n = re.search(pattern, source)
print n.group()
pattern = r'123\.145\.167\.[0-9]{1,2}'
source = "123.145.167.0, 123.145.167.99, 123.145.167.100"
n = re.compile(pattern)
print n.findall(source)
虽然使用搜索只匹配源字符串中的第一个元素,但 findall 通过给出这样的输出产生了一个问题
['123.145.167.0', '123.145.167.99', '123.145.167.10']
是否有可能我可以获得 123.145.167.0 和 123.145.167.99 而不是 123.145.167.100 的匹配项?
我已经彻底了python - regex search and findall却无法理解如何解决我的问题。
请您参考如下方法:
抛出 word boundary最后:\b.
pattern = r'123\.145\.167\.[0-9]{1,2}\b'
source = "123.145.167.0, 123.145.167.99, 123.145.167.100"
n = re.compile(pattern)
print n.findall(source)
['123.145.167.0', '123.145.167.99']
