import re
line = "inet addr:11.11.11.11 Bcast:11.11.11.111 Mask:111.111.11.1"
pattern = r"[\d]{2}[.][\d]{2}[.][\d]{2}[.][\d]{2}[\D]"
re.findall(pattern, line)
['11.11.11.11 ']
re.findall(pattern, line)[0].strip()
'11.11.11.11'
если у вас есть более одного элемента в списке, просто запустите list-comp, используя .strip()
[i.strip() for i in re.findall(pattern, line)]
['11.11.11.11']
re.match()
не будет работать, потому что он будет пытаться соответствовать вашему шаблону, начиная с начала строки (при условии, что ваш шаблон не включает в себя « inet addr: ».
re.search()
работает, но пропускает повторяющиеся элементы и возвращает только первое столкновение с шаблоном при успешном совпадении, кроме того, вам нужно будет использовать filter
для извлечения элемента.
наконец, ключ к решению этой проблемы лежит в последнем символе вашей цели, xx.xx.xx.xx[\D]
. Директива [\D]
гарантирует, что шаблон ищет нецелое число с индексом 12, [\s]
работает одинаково хорошо и соответствует пробелу.