Моя проблема
Я пытаюсь просто вернуть действительный IP (задача требует только 1-255.0-255.0-255.0-255, т.е. без ведущих нулей) Мое Regex соответствует очень хорошо, и у меня есть гораздо менее надежное решение, чтобы ответить на вопрос «правильно», но я пытаюсь понять, почему я получаю результат, который есть.
Мой вопрос
Почему после каждого вызова функции возвращается «NONE»?
Что я сделал
Я проверил свое регулярное выражение с помощью Regex101.com Я пробовал закомментировать все вызовы каждого метода, кроме одного, но получил тот же результат Я пробовал сделать это с помощью интерпретатора python
>> rev = re.compile (r "(? P ((((2 [0-4] \ d) | (25 [0-5])).?) {4})) ") >> x = rev.search ("255.255.255.255") >> x.group ("октет") "255.255.255.255" >> print (x.group ("октет")) 255.255.255.255
Что не вернуло никакого значения 'NONE' Наконец, я попытался добавить дополнительные функции Print (), чтобы узнать, когда будет возвращено значение «NONE». Насколько я могу судить, по какой-то причине в конце функции отправляется «НЕТ». Я пытался прочитать Python RE Docs , но не могу найти причину в списке.
My Code
import re
def ip_checker(var):
print("-----1------")
rev = re.compile(r"(?P<octet>(^([^0])(((25[0-5])|(2[0-4][0-9])|(1?[0-9][0-9])|([0-9]))\.?){4}$))")
try:
print("-----2------")
x = rev.match(var)
print(x.group("octet"))
print("-----3a------")
except:
print("No Results")
print("-----3b------")
#Method Calls
print(ip_checker("255.255.255.255")) # Returns True
print(ip_checker("0.0.0.0")) # Returns False
print(ip_checker("192.168.0.55")) # Returns True
print(ip_checker("0.156.37.15")) # Returns False
My Output
-----1------
-----2------
255.255.255.255
-----3a------
None
-----1------
-----2------
No Results
-----3b------
None
-----1------
-----2------
192.168.0.55
-----3a------
None
-----1------
-----2------
No Results
-----3b------
None
Моя Python Версия
ПРИМЕЧАНИЕ: у меня есть Ma c, в котором явно указаны c версии Python, с которыми он работает?
me@hostname dir % python3 --version
Python 3.6.3
Просто чтобы убедиться, что я полностью обновлен
me@hostname dir % brew update && brew upgrade python
---
#Stuff I'm not gonna show...
#But it updated Portable Ruby & Python
---
==> Upgrading 1 outdated package:
python 3.7.6_1 -> 3.7.7
---
me@hostname dir % python3 --version
Python 3.7.7
Даже после обновления никаких изменений в выход