Skip to main content
 首页 » 编程设计

python之re.match 在两个不同的字符串上返回 true

2025年05月04日65grandyang

我正在使用 python 的 re.match 函数通过忽略像这样的几个字符来比较两个字符串:

import re 
 
url = "/ChessBoard_x16_y16.bmp/xyz" 
 
if re.match( '/ChessBoard_x.._y..\.bmp', url ): 
    print("true") 
else: 
    print("false") 

问题 #1:输出是 true 但我在这里想要 false 因为 url 在 .bmp 之后有一些额外的东西 问题#2: 我在这里使用了两个点来忽略值 16 (x16 & y16) 但实际上这个值可以包含任意数量的数字,例如 x8, x16, x256 等等 那么我应该怎么做才能忽略这个由任意位数组成的完整值呢?

请您参考如下方法:

尝试正则表达式

'/ChessBoard_x[\d]+_y[\d]+\.bmp$' 

一个小演示(也可以尝试 Regex101 )

>>> import re 
>>> pat = re.compile('/ChessBoard_x[\d]+_y[\d]+\.bmp$') 
>>> url = "/ChessBoard_x162_y162.bmp" 
>>> pat.match(url).group() 
'/ChessBoard_x162_y162.bmp' 
>>> url = "/ChessBoard_x16_y16.bmp/xyz" 
>>> pat.match(url).group()  
>>> # Does not match