我想忽略空格并解析像 (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
关于python - 忽略正则表达式中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35654609/