有人可以向我解释以下re.sub()
的过程。
我认为过程如下:
寻找一个"."
,然后寻找一个数字,然后寻找介于1
和9
之间的另一个数字。现在我迷路了。问号是什么? \d*
的作用是什么?为什么在这种情况下我们需要使用原始字符串正则表达式?
答案 0 :(得分:1)
如果您想了解该过程,我可以简单地向您解释。我不知道此正则表达式是否在执行您想要的操作。
.
是正则表达式中的特殊字符,表示任何字符。但是,我们这里要使用点字符。在正则表达式中,可以通过像\
这样使用转义字符\.
来完成此操作。因此,使用.
表示任何字符,使用\.
表示点。\d
代表任何数字,其行为与[0-9]完全相同[1-9]
时,您已指定要从1到9获得数字,这意味着排除了零。*
选择零个或多个字符。与+不同,后者用于选择一个或多个字符。因此,使用\d*
表示[0-9]
中的任何连续数字或没有连续数字。?
用于指示仅使用一个字符或不使用任何字符。因此,使用[1-9]?
意味着尝试只找到1到9之间的一位 IF FOUND 。()
用于将整个正则表达式分组在一个输出中。如果您想了解更多有关正则表达式的信息,请参阅以下很棒的备忘单。
注意:
我认为您在问题中编写的正则表达式不正确。我认为应该(\d*\.\d\d[1-9]?)
才能获得相同的结果。我将尝试使用数字3.141500012
来解释该正则表达式。 \d*\.
表示找到与3.
匹配的点之前可以找到的任意数量的数字。然后,\d\d
与点后的两个数字14
匹配。最后,[1-9]?
与1到9之间的任何数字匹配(如果在我们的示例中与1
匹配)。