python - 在正则表达式 Python 中选择
问题描述
我正在编写一个正则表达式来查找这样的代码:
if condition:True:
statements
第一个冒号代替==
. 到目前为止,我已经想到了这个:r"(if|elif) .* : .* :\n\t"
但我想找到一种方法来选择第一个:
并将其替换为==
. 问题是,我无法找到一种方法来使用正则表达式来替代而不会无意中:通过编写一个:
替换整个if condition
等==
re.sub(r"(if|elif) .* : .* :\n\t","==",text)
或 b:将我脚本中的每个冒号替换为==
,这将导致类似的错误
NameError: Expected a ':', received '=='
那么,有没有办法只用 替换一点正则表达式==
,还是有另一种我忽略的方法来做到这一点?
应该发生什么
输入:
if 3+4:7:
print("Three plus four is actually seven")
elif 3+6:10:
print("3+4 is not 7, yet 3+6=10")
安慰:
Three plus four is actually seven
顺便说一下,这是 Python 3。
解决方案
尝试将所有从最后一个if
到最后一个的所有内容匹配到一个匹配组中,类似地,将最后一个到最后一个的所有内容匹配到另一个组中。现在您可以替换第一个匹配,然后替换下一个匹配elif
:
:
==
re.sub('((?:if|elif)[^:]*):([^:]*:)', r'\1 == \2', s)
推荐阅读
- visual-studio - 在 vs 代码中用松露编译 OpenZeppelin 导入的合约时出错
- python - 如何使用图像加载训练有素的模型作业库?
- c# - 错误 MSB4236:找不到指定的 SDK 'Microsoft.NET.Sdk.web' - .NET 5.0
- reactjs - 使用 useHistory 钩子重定向到具有不同查询参数的特定 url
- awk - 删除根据模式解释的重复项失败
- html - 选项卡内容显示一个在另一个之下
- django - Django 一个简单的查询让我抓狂 ''int' object is not iterable'
- crm - 解决 ZohoCRM-SDK 中的无效代码错误
- c# - 自动填充类中的属性
- regex - 不重复符号的正则表达式匹配字符串