Regex 函数的Python if输出

Regex 函数的Python if输出,regex,python-3.x,if-statement,Regex,Python 3.x,If Statement,我使用以下代码查找字符串中的重复字符 import re S=input() m = re.search(r'([A-Za-z0-9])\1+',S.strip()) if m: print(m.group(1)) else: print(-1) 我不知道为什么“if m:”对我有效,它有什么作用?它是否检查m是否存在?(我认为它应该存在),它是否检查m的值是否大于零 注:如果我的输入字符串没有重复的值,那么print(m)会给我一个错误。如果m:计算表达式m,并检查其值是

我使用以下代码查找字符串中的重复字符

import re
S=input()

m = re.search(r'([A-Za-z0-9])\1+',S.strip())

if m:
    print(m.group(1))
else:
    print(-1)
我不知道为什么“if m:”对我有效,它有什么作用?它是否检查m是否存在?(我认为它应该存在),它是否检查m的值是否大于零


注:如果我的输入字符串没有重复的值,那么print(m)会给我一个错误。

如果m:
计算表达式
m
,并检查其值是否为“truthy”,即如果
bool(m)
True
。如果是,则执行
If
块的主体

如果名称
m
不存在,则在计算表达式
m
时将产生
namererror

此外,如果
S
没有重复的值(例如,它是空的),
print(m)
不会给您错误:

>>> S = ''  # empty
>>> import re
>>> m = re.search(r'([A-Za-z0-9])\1+',S.strip())
>>> print(m)
None  # not an error: this just indicates that the regex didn't find anything
请注意
bool(None)=False