Python RegEx'^(。+?(\ d *))* $'中的空格是什么意思?

时间:2014-05-25 22:57:14

标签: python regex

Python RegEx ^(.+?(\d*)) *$中的空格是什么意思?

  

pat = re.compile('^(。+?(\ d *))* $',re.M)

*\s*是什么意思?

可以忽略空白吗?即^(.+?(\d*)) *$^(.+?(\d*))*$相同?

我举了一些例子,似乎上述两个问题的答案都没有。

谢谢!

2 个答案:

答案 0 :(得分:3)

*表示0或更多次出现,$将匹配锚定到行尾,因此它允许(可能)尾随空格,但不允许使用制表符,除非它实际上是制表符。

否,如果删除该空格,则后面带有不可见空格的行将不匹配。

现在它匹配一个或多个非数字的行序列,后跟可选数字和可选空格。

实际上如果调试我必须查找像“12345”那样的非贪婪匹配的行,因为我倾向于写自己像“^(\ D +(\ d +))\ s * $“或”^(\ D *。(\ d +))\ s * $“取决于意图。在过去,你不得不对自己的贪婪匹配进行编码,这意味着我通常会通过习惯避免像。+(\ d *)这样的东西。捕获0位通常是一个错误,因为。+

消耗了第一个数字

答案 1 :(得分:2)

您可以使用在线正则表达式工具(例如http://www.regex101.com

)自行测试

这只是一个空间角色。

对于您的信息,\s实际上是'空白',因此它匹配标签,表单Feed和其他字符以及空格Whitespace link