Я использую следующий код для поиска повторяющихся символов в строке
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 нуля?
PS: Если моя входная строка (S) не имеет повторяющегося значения, то print(m) выдает мне ошибку.





if m: оценивает выражение m и проверяет, является ли его значение «истинным», то есть является ли bool(m)True. Если это так, выполняется тело блока if.
Если имя m не существует, будет создано NameErrorпри оценке выражение m.
Кроме того, если 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.