regex - 怎么 ?在python的正则表达式中使用?
问题描述
我有这个片段
print(re.sub(r'(-script\.pyw|\.exe)?', '','.exe1.exe.exe'))
输出为 1 如果我删除 ? 从上面的代码片段中运行它
print(re.sub(r'(-script\.pyw|\.exe)', '','.exe1.exe.exe'))
输出再次相同。虽然我正在使用?,但它变得越来越贪婪并用 NULL 替换所有“.exe”。是否有任何解决方法可以仅替换第一次出现?
解决方案
re.sub(pattern, repl, string, count=0, flags=0)
这是re.sub
函数的签名。注意count
参数。如果您只想替换第一次出现,请使用count=1
.
?
是重复运算符的非贪婪修饰符;当它与其他任何东西相邻时,它会使前一个元素成为可选元素。因此,您的首要表达是用无替换-script.pyw
或.exe
或无。由于用空替换空不会更改字符串,因此顶部和底部版本(无法匹配空字符串)将给出相同的结果。
推荐阅读
- c# - 如何仅在 C# 的第一级解析嵌套括号
- ansible - 如何使用 ansible 获取符号链接或目录的日期时间戳?
- reactjs - 为什么在 Next.js 中导入 CSSRulePlugin 会导致错误?
- python - Python Scatter Plot Edgecolors by Label
- javascript - 有没有办法使用 Javascript 向多个元素添加不同的 ID?
- c# - Linq 查询语法到方法查询语法
- python - 使用 Keras 进行多类图像识别
- javascript - SpeechSynthesis.pause() 应该返回 true 但返回 false
- php - Cron 不会在 Centos7 的 PHP 脚本中执行 MySql
- python - Python 和 Pandas 查询 API 和更新数据库