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

时间:2017-08-05 01:15:55

标签: python regex

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

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

test()

和这个

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

test2()

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

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:2)

[]这里表示一组。其中的任何内容都被视为该集合的元素。所以[0-9。]表示0到9之间的数字和'。'字符。如果您可能使用过“[0-9]。+”那么您将从测试2获得预期结果。

您可以尝试https://regex101.com快速检查正则表达式模式,然后在任何地方的代码中使用它们。