正则表达式[0-9]和[0-9.]之间的差异

Mws*_*cer 3 python regex

我刚开始研究正则表达式,并想知道以下内容之间的区别:

def test():
    string = "He was 75 in the 1985sdfdhs 45"
    y = re.findall('[0-9]+', string)
    print(y)

test()
Run Code Online (Sandbox Code Playgroud)

还有这个

def test2():
    string = "He was 75 in the 1985sdfdhs 45"
    y = re.findall('[0-9.]+', string)
    print(y)

test2()
Run Code Online (Sandbox Code Playgroud)

据我所知,"." 匹配任何字符,所以我认为test2的输出将等于['75','1985sdfdhs','45'],相反它们都是['75','1985','45'].只想弄清楚这里发生了什么.谢谢.

Fel*_*Guo 8

当括号内[],该点被认为是其本身的字符.所以第二个正则表达式将匹配0-9以及小数点.括号表示一个字符集,它将匹配集合中的一个字符(这就是为什么它.被认为是一个字符而不是一个说明符).

编辑:作为补充说明,当您了解RegEx时,我建议您使用https://regex101.com/,它将为您分解RegEx的每个部分.