import re
regex = re.compile(r"(\"|\s)(?<key>(CN|C|O|OU|S))=(?<value>(\S+|\s+|\w+|\W+))")
test_str = ("ssl_issuer=\"CN=DigiCert SHA2 High Assurance Server CA C=US O=DigiCert Inc OU=www.digicert.com\" ssl_hash=\"f41565b049f039e765a0f8be8271a4b4817b7378\" ssl_subject=\"CN=syndication.twitter.com C=US S=California O=Twitter, Inc. OU=Twitter Security\" ssl_start_time=\"Wed Jun 29 00:00:00 2016 UTC\" ssl_end_time=\"Mon Sep 16 12:00:00 2019 UTC\" ssl_type=\"X.509 Certificate\" ssl_extended_key_usage=\"Server Authentication, Client Authentication\" ssl_key_length=\"2048 bits\" ssl_key_usage=\"Digital Signature, Key Encipherment\"\n"
" \n"
" ssl_subject=\"CN=*.eu-west-1.webrootcloudav.com\" ssl_start_time=\"Tue Aug 22 00:00:00 2017 UTC\" ssl_end_time=\"Sat Sep 22 12:00:00 2018 UTC\" ssl_type=\"X.509 Certificate\" ssl_extended_key_usage=\"\" ssl_key_length=\"2048 bits\" ssl_key_usage=\"Digital Signature, Non-Repudiation, Key Encipherment\"\n"
" \n"
" ssl_subject=\"CN=*.us.static.hrsmart.com C=US S=Virginia O=Deltek, Inc. OU=Security Services\" ssl_start_time=\"Thu Jan 11 00:00:00 2018 UTC\" ssl_end_time=\"Sun Mar 31 12:00:00 2019 UTC\" ssl_type=\"X.509 Certificate\" ssl_extended_key_usage=\"Server Authentication, Client Authentication\" ssl_key_length=\"2048 bits\" ssl_key_usage=\"Digital Signature, Key Encipherment\"\n"
" \n"
" ssl_subject=\"CN=*.googleapis.com C=US S=California O=Google Inc\" ssl_start_time=\"Tue Mar 13 18:57:10 2018 UTC\" ssl_end_time=\"Tue Jun 5 18:17:00 2018 UTC\" ssl_type=\"X.509 Certificate\" ssl_extended_key_usage=\"Server Authentication, Client Authentication\" ssl_key_length=\"0 bits\" ssl_key_usage=\"Digital Signature, Certificate Signing, CRL Signing\"\n"
" \n"
" ssl_subject=\"CN=subscription.rhsm.redhat.com C=US S=North Carolina O=Red Hat, Inc. OU=Red Hat Network\" ssl_start_time=\"Thu May 18 16:30:24 2017 UTC\" ssl_end_time=\"Sat May 18 16:30:24 2019 UTC\" ssl_type=\"X.509 Certificate\" ssl_extended_key_usage=\"Server Authentication\" ssl_key_length=\"4096 bits\" ssl_key_usage=\"\"")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html