Skip to main content
 首页 » 编程设计

python之在正则表达式中达到 search() 和 findall() 之间的中间立场

2024年11月01日30小虾米

一个要求我为 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) 

Gives:

['123.145.167.0', '123.145.167.99']