gpt4 book ai didi

python regex - 使用 re.IGNORECASE 时破折号匹配为数字

转载 作者:行者123 更新时间:2023-11-28 20:23:31 25 4
gpt4 key购买 nike

我正在使用正则表达式从 13 位 ISBN 中去除非数字字符,我遇到了一些我想了解的奇怪行为。我用 Python 2.7.5 和 3.3.2 对此进行了测试:

import re
re.sub("\D", '', '978-1-936978-09-0')

这给出了 9781936978090,正确。但我注意到,如果我这样做...

re.sub("\D", '', '978-1-936978-09-0', re.IGNORECASE)

...对于 re.IGNORECASE,它留在最后两个破折号中,给出:9781936978-09-0。

这并不重要,但我仔细检查了所有四个破折号都是完全相同的字符(只是一个普通的破折号)。我尝试了一些变体(例如 [^\d] 而不是\D,或 [^0-9])并得到了同样奇怪的结果。

这对我来说并不紧急,因为忽略大小写对此并不重要,但我想知道发生了什么。有什么想法吗?

最佳答案

re.sub的第四个参数不是 flags,而是替换计数。您应该使用 flags 关键字参数指定 flags

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

>>> re.sub("\D", '', '978-1-936978-09-0', flags=re.IGNORECASE)
'9781936978090'

关于python regex - 使用 re.IGNORECASE 时破折号匹配为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20381104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com