Я изучаю регулярные выражения, специально названные группы захвата.
Возникла проблема, из-за которой я не могу понять, как написать оператор if / else для моей функции findVul () .
Как работает или должен работать код, так это то, что findVul () проходит через data1 и data2 , которые были добавлены всписок myDATA .
Если регулярное выражение находит совпадение для всей именованной группы, то оно должно распечатать результаты.В настоящее время он работает отлично.
КОД:
import re
data1 = '''
dwadawa231d .2 vulnerabilities discovered dasdfadfad .One vulnerability discovered 123e2121d21 .12 vulnerabilities discovered sgwegew342 dawdwadasf
2r3232r32ee
'''
data2 = ''' d21d21 .2 vul discovered adqdwdawd .One vulnerability disc d12d21d .two vulnerabilities discovered 2e1e21d1d f21f21
'''
def findVul(data):
pattern = re.compile(r'(?P<VUL>(\d{1,2}|One)\s+(vulnerabilities|vulnerability)\s+discovered)')
match = re.finditer(pattern, data)
for x in match:
print(x.group())
myDATA = [data1,data2] count_data = 1
for x in myDATA:
print('\n--->Reading data{0}\n'.format(count_data))
count_data+=1
findVul(x)
ВЫХОД:
--->Reading data1
2 vulnerabilities discovered
One vulnerability discovered
12 vulnerabilities discovered
--->Reading data2
Теперь я хочу добавитьоператор if / else, чтобы проверить, есть ли какие-либо совпадения для всей именованной группы.
Я пробовал что-то подобное, но, похоже, это не работает.
CODE:
def findVul(data):
pattern = re.compile(r'(?P<VUL>(\d{1,2}|One)\s+(vulnerabilities|vulnerability)\s+discovered)')
match = re.finditer(pattern, data)
if len(list(match)) != 0:
print('\nVulnerabilities Found!\n')
for x in match:
print(x.group())
else:
print('No Vulnerabilities Found!\n')
ВЫХОД:
--->Reading data1
Vulnerabilities Found!
--->Reading data2
No Vulnerabilities Found!
Как вы можете видеть, он не печатает уязвимости, которые должны быть в data1 .
Может кто-нибудь объяснить, пожалуйста, правильный способ сделать это и почему моя логика неверна.Большое спасибо :) !!