我刚开始研究正则表达式,并想知道以下几点之间的区别:
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']。只想弄清楚这里发生了什么。谢谢。
答案 0 :(得分:7)
当在括号[
和]
内时,点被视为字符本身。所以第二个正则表达式将匹配0-9以及小数点。括号表示一个字符集,它将匹配集合中的一个字符(这就是.
被认为是字符而不是说明符的原因)。
编辑:作为补充说明,在您了解RegEx的同时,我建议https://regex101.com/,它将为您分解RegEx的每个部分。
答案 1 :(得分:2)
[]这里表示一组。其中的任何内容都被视为该集合的元素。所以[0-9。]表示0到9之间的数字和'。'字符。如果您可能使用过“[0-9]。+”那么您将从测试2获得预期结果。
您可以尝试https://regex101.com快速检查正则表达式模式,然后在任何地方的代码中使用它们。