Что представляет собой шаблон регулярного выражения, соответствующий строке, начинающейся с abc-def-xyz и заканчивающейся чем угодно?Шаблон регулярного выражения для соответствия строке
ответ
Update
Поскольку вы только хотите, чтобы соответствовать имена хостов, которые начинаются с abc-def
вы можете просто использовать str.startswith()
:
hosts = ['abc-def.1.desktop.rul.com',
'abc-def.2.desktop.rul.com',
'abc-def.3.desktop.rul.com',
'abc-def.4.desktop.rul.com',
'abc-def.44.desktop.rul.com',
'abc-def.100.desktop.rul.com',
'qwe-rty.100.desktop.rul.com',
'z.100.desktop.rul.com',
'192.168.1.10',
'abc-def.100abc.desktop.rul.com']
filtered_hosts = [host for host in hosts if host.startswith('abc-def')]
print filtered_hosts
Выход
['abc-def.1.desktop.rul.com', 'abc-def.2.desktop.rul.com', 'abc-def.3.desktop.rul.com', 'abc-def.4.desktop.rul.com', 'abc-def.44.desktop.rul.com', 'abc-def.100.desktop.rul.com', 'abc-def.100abc.desktop.rul.com']
решение Оригинальное регулярное выражение следующим образом ,
Допустим, что ваши данные список имен хостов, таких как эти:
hosts = ['abc-def.1.desktop.rul.com',
'abc-def.2.desktop.rul.com',
'abc-def.3.desktop.rul.com',
'abc-def.4.desktop.rul.com',
'abc-def.44.desktop.rul.com',
'abc-def.100.desktop.rul.com',
'qwe-rty.100.desktop.rul.com',
'z.100.desktop.rul.com',
'192.168.1.10',
'abc-def.100abc.desktop.rul.com']
import re
pattern = re.compile(r'abc-def\.\d+\.')
filtered_hosts = [host for host in hosts if pattern.match(host)]
print filtered_hosts
Выход
['abc-def.1.desktop.rul.com', 'abc-def.2.desktop.rul.com', 'abc-def.3.desktop.rul.com', 'abc-def.4.desktop.rul.com', 'abc-def.44.desktop.rul.com', 'abc-def.100.desktop.rul.com']
Узор регулярное выражение говорит, чтобы соответствовать все строки, начинающиеся с abc-def.
, за которым следует одна или несколько цифр, а затем точка.
Если вы хотите, чтобы соответствовать более общему шаблону, таким как любой последовательность 3 строчных букв, за которыми следуют -
, а затем еще 3 строчных букв, вы можете сделать это:
pattern = re.compile(r'[a-z]{3}-[a-z]{3}\.\d+\.')
Теперь выход также включает 'qwe-rty.100.desktop.rul.com'
,
Thanx. Но регулярное выражение, которое вы предоставили, просто ограничьте его аббревиатурой и отправкой. Поскольку список также содержит узлы, такие как abc-def.somevalue.desktop.rul.com, abc-def.somevalue1-somevalue2.desktop.rul.com, abc-def.somevalue-somevalue1-somevalue2.desktop.rul.com –
В основном, я просто хочу шаблон регулярного выражения, который извлекает имя хоста, начиная с abc-def, это –
Прошу прощения. Существует адекватное объяснение шаблона, чтобы вы могли изменить его для себя. Это совершенно очевидно. – mhawke
Что происходит, когда вы пытаетесь? 'samplemethod (filter = r'abc-def ')' – mhawke
Я предполагаю, что он не принимает этот шаблон, потому что я не получаю никакого вывода для него –
Возможно, шаблон не соответствует чему-либо в целевой строке? Какова реализация функции? Можете ли вы опубликовать его здесь? – mhawke