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

标签 python regex

我想忽略空格并解析像 (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/

相关文章:

javascript - 基于 Python websocket 的应用程序框架/服务器

python - OperationalError : (2019, ""无法初始化字符集utf8mb4(路径:C:\\mysql\\\share\\charsets\\)"")

javascript - 正则表达式匹配没有连续空格的用户名

.net - 用于查找后缀的正则表达式,但不从右到左捕获

asp.net - 为什么大于和小于符号在以下正则表达式中匹配?

python - GTK 弹出菜单未出现在鼠标位置

python - 了解 Blum Blum Shub 算法。 (Python 实现)

python - 为什么在 Cython 中将列表转换为集合不起作用?

c# - 在我的 asp.net mvc 中找不到允许最多 2 位数字的 [RegularExpression]

javascript - 空格不被识别为特殊字符