Skip to main content
 首页 » 编程设计

python之忽略正则表达式中的空格

2025年05月04日2298°冷暖

我想忽略空格并解析像 (int, int) xx (int, int) 这样的模式。例如,

import re 
m = re.match(r"[\s]*\([\s]*(\d+)[\s]*,[\s]*(\d+)[\s]*\)[\s]*xx[\s]*\([\s]*(\d+)[\s]*,[\s]*(\d+)[\s]*\)[\s]*", "   (2,  74) xx   (5  ,6), physicist") 
print (m.group(0)) #    (2,  74) xx   (5  ,6) 
print (m.group(1)) # 2 
print (m.group(2)) # 74 
print (m.group(3)) # 5 
print (m.group(4)) # 6 

如您所见,在我的模式中有很多 [\s]* 来表示零个或多个空格。有没有更简单的方法来编写这种模式?

请您参考如下方法:

我不知道正则表达式中有什么方法,但我想到的最简单的解决方案是使用简单的字符串替换:

import re 
m = re.match(r"\((\d+),(\d+)\)xx\((\d+),(\d+)\)", "   (2,  74) xx   (5  ,6), physicist".replace(' ', '')) 
print (m.group(0)) # (2,74)xx(5,6) 
print (m.group(1)) # 2 
print (m.group(2)) # 74 
print (m.group(3)) # 5 
print (m.group(4)) # 6 

您还可以使用正则表达式删除任何类型的空格(不仅仅是空格):

import re 
s = re.sub(r'\s+', '', '   (2,  74) xx   (5  ,6), physicist') 
m = re.match(r"\((\d+),(\d+)\)xx\((\d+),(\d+)\)", s) 
print (m.group(0)) # (2,74)xx(5,6) 
print (m.group(1)) # 2 
print (m.group(2)) # 74 
print (m.group(3)) # 5 
print (m.group(4)) # 6