Python Regex, сопоставление с образцом, цифры и слова? - PullRequest
0 голосов
/ 17 февраля 2019

Мне трудно создать шаблон регулярного выражения, и, возможно, вы могли бы помочь.

1. Цель - получить только результат, выделенный жирным шрифтом, а не команду с grep xxxx?

var = "grep " +net+ "/mnt/hgfs/IRR/fgen.txt"
f2pat = re.findall(r'^([\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})/\d+',fgen)    
print ("FGEN Command: ",f2pat)

Команда FGEN: grep 223.253.0.0/20 / mnt / hgfs /IRR / fgen.txt 223.253.0.0 / 20

Теперь у меня есть два адреса в выходных данных 1 - это сама команда, вторая - результат (жирный шрифт), и я просто хочу сопоставитьрезультат.

Цель - получить цифры после слова-члена: AS xxxxx (полужирный)?/ mnt / hgfs / IR / FILE / as4431-Customers-sc: участники: AS 28723 , AS3212

fpas = re.findall (r '(^ члены: AS) (?:\ d {1,6}) ', xxx)

Цель - получить / сопоставить IP-адрес (выделен жирным шрифтом) после рабочего маршрута :?RADB: маршрут: 1.0.0.0 / 8

radbpat = re.findall (r '(? <= RADB:) (\ S + \ S +) (? <= Маршрут) (\S + \ S +) (?: [\ D] {1,3}). (?: [\ D] {1,3}). (?: [\ D] {1,3}). (?: [\ d] {1,3}) / \ d + ', кто) </p>

Мой шаблон регулярного выражения не работает должным образом.

Спасибо

1 Ответ

0 голосов
/ 17 февраля 2019

Для первого, кажется, что подсеть, которую вы хотите, расположена в конце строки, так что вы можете просто захватить именно это:

text = 'grep 223.253.0.0/20 /mnt/hgfs/IRR/fgen.txt 223.253.0.0/20'
result = re.match('^.+\s([\d\.\/]+)$', text).group(1)
# result = '223.253.0.0/20'

Для второго этоПохоже, вы просто хотите захватить первый экземпляр AS xxxxx , поэтому вы можете сделать:

text = '/mnt/hgfs/IR/FILE/as4431-customers-sc:members: AS28723, AS3212'
result = re.match('^.+\b(AS\d+)\b.+$', text).group(1)
# result = 'AS28723'

Для третьего вы можете повторно использовать первое решение:

text = 'RADB: route: 1.0.0.0/8'
result = re.match('^.+\s([\d\.\/]+)$', text).group(1)
# result = '1.0.0.0/8'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...