Python regex re.sub:某事

hea*_*n90 3 python regex

我有一个这样的程序:

import re

x='aaaaaaaa;aa;aaa;aaa;aaaaaaaaaa;'
x=re.sub(';','.',x, re.IGNORECASE)

print x
Run Code Online (Sandbox Code Playgroud)

但输出是这样的:

aaaaaaaa.aa.aaa;aaa;aaaaaaaaaa;
Run Code Online (Sandbox Code Playgroud)

还有一些;没有被一个替换.,为什么?

使用Python 2.6

jam*_*lak 6

更新 - 在Python 2.6中,您可以这样做:

>>> re.sub('(?i);','.',x)
'aaaaaaaa.aa.aaa.aaa.aaaaaaaaaa.'
Run Code Online (Sandbox Code Playgroud)

适用于Python 2.7+和3.0+

换句话说,第三个参数实际上是count(要替换的数量),re.IGNORECASE并且只是一个整数,因此它将其用作计数.

>>> re.sub(';','.',x, flags=re.IGNORECASE)
'aaaaaaaa.aa.aaa.aaa.aaaaaaaaaa.'

>>> re.IGNORECASE
2
Run Code Online (Sandbox Code Playgroud)