Я пытаюсь найти совпадение строки, когда она начинается с определенной части слова. Это сложно объяснить, поэтому я приведу пример; Я работаю над сценарием, который проверяет, какой тип сетевого интерфейса на устройстве Cisco нужен пользователю. Это может быть Ethernet, FastEthernet, GigabitEthernet или TenGigabitEthernet. Дело в том; Пользователь может указать эти имена с аббревиатурами. Строка «Fa» может использоваться, например, для FastEthernet, а также «Fas», «Fast», «FastE» и т. Д.
Так что мне нужно регулярное выражение, которое дает мне положительное совпадение с FastEthernet, когда пользователь вводит 'Fas' или Fast.
Я попробовал следующее регулярное выражение;
^ (Fa | Fas | Быстрый | FastE | FastEt | FastEth | FastEthe | FastEther | FastEthern | FastEtherne | FastEthernet)
Что работает, но очень уродливо и не очень портативно.
#!/usr/bin/env python3
import re
def get_interface(name):
""" Return the full name of the interface """
if re.match('^(Gi|Gig|Giga|Gigab|Gigabi|Gigabit|GigabitE|GigabitEt|GigabitEth|GigabitEthe|GigagibitEther|GigabitEthern|GigabitEtherne|GigabitEthernet)', name):
return 'GigabitEthernet'
elif re.match('^(Fa|Fas|Fast|FastE|FastEt|FastEth|FastEthe|FastEther|FastEthern|FastEtherne|FastEthernet)', name):
return 'FastEthernet'
elif re.match('^(Et|Eth|Ethe|Ether|Ethern|Etherne|Ethernet)', name):
return 'Ethernet'
print(get_interface('Gi'))
Нет сообщений об ошибках.