我正面临一个奇怪的正则表达式问题。这是一个用空格替换a-z的简单正则表达式。但它只能替换一定的固定长度。
import re
s = 'aaaaaaaaaaaaabbbbbbbbbbbbbbbbbccccccccccccccccccdddddddddddddddddd'
s = unicode(s, 'utf-8')
s = re.sub(r'[a-z]', ' ', s, re.UNICODE)
print s
运行此代码时,输出为
ccccccccccccccccdddddddddddddddddd
如果我删除了re.UNICODE
标志,那么它可以正常工作。有人可以解释为什么会这样吗。
答案 0 :(得分:1)
re.sub,如您所见,第四个位置参数是count
。尝试做re.sub(r'[a-z]', ' ', s, flags=re.UNICODE)
答案 1 :(得分:1)
re.sub
的第四个参数是count
。如果要指定flags
,则应将其设置为关键字参数:
s = re.sub(r'[a-z]', ' ', s, flags=re.UNICODE)