最近我在写一个Python程序,但是出现了一个bug,我花了一个多小时解决问题,最终发现正则表达式是问题所在。我不知道在模式
M{m,n}
中m
和n
之间必须没有空格
,而我将其写成了M{m, n}
,导致代码无法执行。
我查看了http://docs.python.org/3/library/re.html关于{m,n}
部分的内容,它没有说明在{m,n}
中m
和n
之间不能放置空格。为什么呢?还有其他微小的事情文档没有提到,我应该了解正则表达式吗?
(?:foo)
可以在自由空间模式下写成(? :foo)
,并仍然被识别为非捕获组。 - Alan Moore(?x)(? :foo)
在某些正则表达式的实现中是有效的(比如Java)。 - JonM(?:...)
和{2,4}
应始终被视为语法错误,并且[123 xyz]
中的空格应始终匹配空格字符。 - Alan Moore