我是Python正则表达式的新手。我正在尝试从字符串中提取整数,这是代码。
print(re.findall('\d{3}', '$2700'))
print(re.findall('[0-9]{3}', '$2700'))
输出是
['270']
['270']
似乎“ \ d”和“ [0-9]”的工作方式相同,请使用docs.python.org上的链接对此进行解释。
答案 0 :(得分:2)
正则表达式Syntax说
对于Unicode(str)模式:
匹配任何Unicode十进制数字(即 是Unicode字符类别[Nd]中的任何字符)。这包括 [0-9],以及许多其他数字字符。如果使用ASCII标志 仅[0-9]被匹配。
对于8位(字节)模式:
匹配任何小数 数字;相当于[0-9]。
因此,它们等效于ASCII,但是在使用Unicode字符时\d
会匹配更多字符。此问题的输入:\d only matchs 0-9 digits?
>>> s="۱۲۳۴۵۶۷۸۹"
>>> s.isdigit()
True
>>> re.match("\d+",s)
<_sre.SRE_Match object; span=(0, 9), match='۱۲۳۴۵۶۷۸۹'>
>>> re.match("[0-9]",s)
(no match)