首页 > 解决方案 > 需要对正则表达式代码的一部分进行具体解释

问题描述

我正在用 Python 开发一个计算器程序,并且需要从数字中删除前导零,以便计算按预期工作。例如,如果用户在计算器中输入“02+03”,结果应该返回 5。为了去除数字前面的这些前导零,我在这里问了一个问题,得到了以下答案。

self.answer = eval(re.sub(r"((?<=^)|(?<=[^\.\d]))0+(\d+)", r"\1\2", self.equation.get()))

我完全理解字符串开头的正向向后看和非数字、非句点字符的向后看是如何工作的。我感到困惑的是,在这个正则表达式代码中,我可以在哪里找到匹配模式的替代品?

我在研究正则表达式时在网上发现了这个。

result = re.sub(pattern, repl, string, count=0, flags=0)

上面的正则表达式代码中的“repl”在哪里?如果可能的话,有人可以帮忙解释一下 r"\1\2" 在这个正则表达式中的用途吗?

谢谢你的帮助!:)

标签: pythonregextkinter

解决方案


正则表达式的“repl”部分是这个组件:

r"\1\2"

在正则表达式的“查找”部分,正在进行组捕获(通常由内容周围的“()”字符表示,尽管这可以被特定参数覆盖)。

在 python 正则表达式中,用于指示对位置捕获组的引用(有时称为“反向引用”)的语法是“\n”(其中“n”是指“查找”部分中组的位置的数字的正则表达式)。

因此,此正则表达式返回一个字符串,其中整体内容被专门替换为与编号组匹配的输入字符串的一部分。

注意:我不相信“repl”的“\1”部分实际上是必需的。我认为:

r"\2"

...也可以。

进一步阅读:https ://www.regular-expressions.info/brackets.html


推荐阅读