Извлечение подстроки строки в регулярном выражении python - PullRequest
1 голос
/ 23 января 2020

У меня есть поток структурированных строк. Я хочу извлечь 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'

Спасибо.

1 Ответ

1 голос
/ 23 января 2020

Вы можете сделать это без regex

sample = 'cpe:2.3:a:microsoft:asp.net_core:2.1:*:*:*:*:*:*'

' '.join(sample.split(':')[3:][:2])

'microsoft asp.net_core'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...