Python [0-9]和[0-9]之间的正则表达式差异。]
我刚开始研究正则表达式,想知道以下表达式之间有什么区别:Python [0-9]和[0-9]之间的正则表达式差异。],python,regex,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)
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',1985SDFDH',45',,而它们都是['75',1985',45']。只是想弄清楚这里发生了什么。谢谢 在括号内时,点本身被视为一个字符。因此,第二个正则表达式将匹配0-9以及小数点。括号表示一个字符集,并将匹配该集中的一个字符(这就是为什么
被视为字符而不是说明符)
编辑:作为补充说明,在您学习RegEx时,我建议您将RegEx的每个部分进行细分 []这里表示一个集合。其中的任何内容都被视为集合的一个元素。所以[0-9]表示从0到9的数字和一个“.”字符。如果您可能使用了“[0-9].+”,那么您将从测试2中得到预期的结果
您可以尝试快速检查您的正则表达式模式,然后在任何地方的代码中使用它们。非常感谢,这就解释了为什么“[0-9]+.+”输出['75'、'1985SDFDH'、'45'],因为“.”在括号之外,所以它被视为正则表达式的一部分,而不是句点。太棒了,谢谢你的链接。