首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要对regex代码的部分进行具体解释。

需要对regex代码的部分进行具体解释。
EN

Stack Overflow用户
提问于 2018-09-19 01:56:24
回答 3查看 54关注 0票数 1

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

代码语言:javascript
复制
self.answer = eval(re.sub(r"((?<=^)|(?<=[^\.\d]))0+(\d+)", r"\1\2", self.equation.get()))

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

我是在研究regex表达式时在网上发现的。

代码语言:javascript
复制
result = re.sub(pattern, repl, string, count=0, flags=0)

上面regex代码中的"repl“在哪里?如果可能的话,是否有人能帮助解释在这个正则表达式中r"\1\2“是用来做什么的?

谢谢你的帮助!)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-19 02:24:18

首先,repl包括您将要替换的内容。

要理解\1\2,您需要知道什么是捕获分组。

查看此视频以获取组捕获的基本知识。

在这里,因为你的正则表达式将它找到的每一组分割成1,2组.等等。这是因为您在regex中放置了括号()。$1,$2或\1,\2可以用来引用它们。

本例中的

regex正在用它自己替换前导0(被组2捕获)之后的所有数字。

注意: \1不是必需的。没有它也很好。

票数 1
EN

Stack Overflow用户

发布于 2018-09-19 02:24:22

regex的"repl“部分是以下组件:

代码语言:javascript
复制
r"\1\2"

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

在python中,用于指示对位置捕获组(有时称为“反向引用”)的引用的语法是"\n“(其中"n”是指向该组在regex的"find“部分中的位置的数字)。

因此,这个regex返回一个字符串,在该字符串中,整个内容被特定的部分替换为输入字符串的一部分,这些部分由编号组匹配。

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

代码语言:javascript
复制
r"\2"

...would也同样有效。

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

票数 2
EN

Stack Overflow用户

发布于 2018-09-19 02:00:33

见示例:

代码语言:javascript
复制
>>> import re
>>> s='awd232frr2cr23'
>>> re.sub('\d',' ',s)
'awd   frr cr  '
>>> 

解释:

  • 实际上,'\d'是整数,因此移除它们并用repl (在本例中是' ')替换它们。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52396923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档