Python 正则表达式,\d 可以匹配到全角数字么

2018-12-16 19:38:52 +08:00
 jinyu121

话不多说,上代码

import re
pattern_id = re.compile("(\d+)_E(\d+)_C(\d+)_P(\d+)")
file_name = "毛刺 A 1 127210853300_E2_C2_P2.bmp"
print(pattern_id.findall(file_name)[0])

结果竟然是

('1 127210853300', '2', '2', '2')

竟然最前面的那个全角 1 被匹配上了!

(由于我浏览器启用了自动加空格功能…… 澄清一下阿~1 和 12 之间没有空格)

所以说全角数字也是数字了么?

2865 次点击
所在节点    Python
7 条回复
leoleoasd
2018-12-16 19:43:18 +08:00

macos 表示不行
jinyu121
2018-12-16 20:05:17 +08:00
@leoleoasd 澄清一下,1和 12 之间没有空格,空格是我浏览器自动加上的……去掉再试一下?

![屏幕快照 2018-12-16 下午 8.03.11.png]( https://i.loli.net/2018/12/16/5c163f6f82b7a.png)
leoleoasd
2018-12-16 20:09:37 +08:00
原来是空格的问题..
wd
2018-12-16 20:16:49 +08:00
这个估计是和 local 有关系
wd
2018-12-16 20:17:08 +08:00
说错 应该是 locale
keakon
2018-12-16 21:15:22 +08:00
Python 3 对于 str pattern 会匹配 unicode 的数字,对于 bytes 只匹配 [0-9],也可以设置 re.ASCII。
scriptB0y
2018-12-17 10:02:22 +08:00
楼上正解,可以用 ASCII 控制 unicode pattern 只匹配 ASCII

https://docs.python.org/3/library/re.html#re.ASCII

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/518060

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX