У меня есть поток структурированных строк. Я хочу извлечь 2 указанных c раздела из каждого из них на Python языке.
Например) мои строки выглядят так:
cpe: 2.3: a: троглобит : uftpd : *: *: *: *: *: *: *: *
cpe: 2.3: o: google : android: 8.0: *: *: *: *: *: *: *
cpe: 2.3: a: microsoft : asp .net_core : 2.1: *: *: *: *: *: *
Мне нужны только разделы BOLD.
Имейте в виду, что в конце число *
отличается в каждом случае (это между 6,7,8). Кроме того, строки могут быть запущены с помощью cpe:2.3:o:
или cpe:2.3:a:
Я пробовал разные выражения, такие как:
Например, это работает с делами, которые имеют только 6 *
в конце.
try:
temp = re.search("cpe:2.3:a:(.*):\*:\*:\*:\*:\*:\*",testString).group(1)
except AttributeError:
temp = 'NOT FOUND'
или
(не работает)
try:
temp = re.search("(cpe:2.3:a:(.*)|cpe:2.3:o:)(.*)(:\*:\*:\*:\*:\*:\*:\*:\*|:\*:\*:\*:\*:\*:\*:\*|:\*:\*:\*:\*:\*:\*)", testString).group(1)
except AttributeError:
temp = 'NOT FOUND'
или
(не работает)
try:
temp = re.search("(cpe:2.3:a:(.*):(.*))':{0}'$", testString).group(1)
except AttributeError:
temp = 'NOT FOUND'
Спасибо.