首页 > 解决方案 > 怎么 ?在python的正则表达式中使用?

问题描述

我有这个片段

print(re.sub(r'(-script\.pyw|\.exe)?', '','.exe1.exe.exe'))

输出为 1 如果我删除 ? 从上面的代码片段中运行它

print(re.sub(r'(-script\.pyw|\.exe)', '','.exe1.exe.exe'))

输出再次相同。虽然我正在使用?,但它变得越来越贪婪并用 NULL 替换所有“.exe”。是否有任何解决方法可以仅替换第一次出现?

标签: regexpython-3.x

解决方案


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

这是re.sub函数的签名。注意count参数。如果您只想替换第一次出现,请使用count=1.

?是重复运算符的非贪婪修饰符;当它与其他任何东西相邻时,它会使前一个元素成为可选元素。因此,您的首要表达是用无替换-script.pyw.exe 无。由于用空替换空不会更改字符串,因此顶部和底部版本(无法匹配空字符串)将给出相同的结果。


推荐阅读