为了账号安全,请及时绑定邮箱和手机立即绑定

如何在python中编写一个正则表达式,该正则表达式在字符串的第一个句点处停止

如何在python中编写一个正则表达式,该正则表达式在字符串的第一个句点处停止

慕盖茨4494581 2021-04-29 14:58:17
我有几百万个这样的方程式: an equation: a(%)^ + b# = (+)C!.我要退货的是: a(%)^ + b# = (+)C!对于该方程式来说,永远都是正确的:1.它以“一个方程式:”开头。2.在两个空格之间将包含等号(=)。3.它将在两个空格之间包含任意数量的加号(+)。4.它将以句点(。)结尾。可能是正确的情况:1.该方程式可以包含附加的+和=,尽管没有用空格来描述。2.等式可以包含句点之后的其他信息,并且该信息可以包含句点。例如:an equation: a(%)^ + b# = (+)C!. An annotation about the (!!*) equation.3.我想方程式中可能有句点。我对此表示怀疑,并且我认为如果它们确实发生,它们将出现在等号之前(左侧)。4.该方程式可能不存在。该字符串永远不会为空,但它可能不包含一个方程式(即四个始终为真的条件)。这是我到目前为止的内容:e = "an equation: a(%)^ + b# = (+)C!. An annotation about the (!!*) equation."rx = re.search(r'(?<=an equation:\s)(.*=.*)\.?',e)print rx.group(0)让我解释一下正则表达式的每个部分:(r'(?<=an equation:\s)查找“等式”加上任意数量的空格,但不保留它。(.*=.*)断言必须有一个等号。我发现这几乎肯定会普遍排除非等式。如果没有,我可以检测并处理一些其他情况。.\?在我看来,这应该在=号之后找到第一个句点(即,摆脱了对。using的典型解释),然后停止。但是,事实并非如此。我的正则表达式返回:a(%)^ + b# = (+)C!. An annotation about the (!!*) equation.我认为.\?正则表达式的贪婪本质就是问题所在。我尝试了许多其他组合,分别使用.\和?以及[]带有和不带有()。所有这些都将如上所述返回带有注释的第二条语句,或者返回NoneType(即不匹配)。我现在感到完全不知道如何在第一阶段后停止。预先感谢您的帮助。我现在已经在此站点上花了两天时间,并使用Python文档来尝试解决此问题。我只是无法找到/理解我所需要的东西。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号