Можно ли провести различие между аргументами, основанными на регулярном выражении с argparse?
Я бы хотел, чтобы мой сценарий принимал либо IP-адрес, либо сетевой адрес, но должен иметь возможность различать два, потому чтовызов API-интерфейса требует, чтобы я указал, какой из них используется.Я бы предпочел не использовать явный флаг, чтобы указать, какой аргумент используется, вместо этого использовать регулярное выражение, но не уверен, что это возможно?
Пример использования:
ip-lookup.py 192.168.1.1
192.168.1.1 следуетбыть назначенным аргументу с именем 'ip'
ip-lookup.py 192.168.0.0/16
ip-lookup.py 192.168.0.0 255.255.0.0
ip-lookup.py 192.168.0.0/255.255.0.0
192.168.0.0 / 16 должен быть назначен аргументу с именем 'network'
код:
parser = argparse.ArgumentParser(description='Lookup an IP address or network in the backend IPAM system.')
parser.add_argument('ip', help='IP host address', type=str, required=False, **regex to match on IP address**)
parser.add_argument('network', help='IP network address', type=str, required=False, **regex to match on IP network**)
args = parser.parse_args()
args.ip -> should only exist if the user entered an IP address as parameter
args.network -> should only exist if the user entered an IP network as parameter