python(re.sub())中的替换模式

时间:2018-12-06 06:11:03

标签: python

The question

enter image description here

有人可以向我解释以下re.sub()的过程。

我认为过程如下:

寻找一个".",然后寻找一个数字,然后寻找介于19之间的另一个数字。现在我迷路了。问号是什么? \d*的作用是什么?为什么在这种情况下我们需要使用原始字符串正则表达式?

1 个答案:

答案 0 :(得分:1)

如果您想了解该过程,我可以简单地向您解释。我不知道此正则表达式是否在执行您想要的操作。

  • 首先,.是正则表达式中的特殊字符,表示任何字符。但是,我们这里要使用点字符。在正则表达式中,可以通过像\这样使用转义字符\.来完成此操作。因此,使用.表示任何字符,使用\.表示点。
  • \d代表任何数字,其行为与[0-9]完全相同
  • 使用[1-9]时,您已指定要从1到9获得数字,这意味着排除了零。
  • 我们可以使用星号*选择零个或多个字符。与+不同,后者用于选择一个或多个字符。因此,使用\d*表示[0-9]中的任何连续数字或没有连续数字。
  • ?用于指示仅使用一个字符或不使用任何字符。因此,使用[1-9]?意味着尝试只找到1到9之间的一位 IF FOUND
  • 括号()用于将整个正则表达式分组在一个输出中。

如果您想了解更多有关正则表达式的信息,请参阅以下很棒的备忘单。 enter image description here

注意:

我认为您在问题中编写的正则表达式不正确。我认为应该(\d*\.\d\d[1-9]?)才能获得相同的结果。我将尝试使用数字3.141500012来解释该正则表达式。 \d*\.表示找到与3.匹配的点之前可以找到的任意数量的数字。然后,\d\d与点后的两个数字14匹配。最后,[1-9]?与1到9之间的任何数字匹配(如果在我们的示例中与1匹配)。