import re
logdata = r"""159.253.153.40 - - [21/Jun/2019:15:46:10 -0700] "POST /e-business HTTP/1.0" 504 19845
136.195.158.6 - feeney9464 [21/Jun/2019:15:46:11 -0700] "HEAD /open-source/markets HTTP/2.0" 204 21149"""
pattern = r'''
(?P<host>\d+(?:\.\d+){3}) # 1+ digits and 3 occurrenses of . and 3 digits
\s+\S+\s+ # 1+ whitespaces, 1+ non-whitespaces, 1+ whitespaces
(?P<user_name>\S+)\s+\[ # 1+ non-whitespaces (Group "user_name"), 1+ whitespaces and [
(?P<time>[^\]\[]*)\]\s+ # Group "time": 0+ chars other than [ and ], ], 1+ whitespaces
"(?P<request>[^"]*)" # ", Group "request": 0+ non-" chars, "
'''
for item in re.finditer(pattern,logdata,re.VERBOSE):
print(item.groupdict())
aW1wb3J0IHJlCmxvZ2RhdGEgPSByIiIiMTU5LjI1My4xNTMuNDAgLSAtIFsyMS9KdW4vMjAxOToxNTo0NjoxMCAtMDcwMF0gIlBPU1QgL2UtYnVzaW5lc3MgSFRUUC8xLjAiIDUwNCAxOTg0NQoxMzYuMTk1LjE1OC42IC0gZmVlbmV5OTQ2NCBbMjEvSnVuLzIwMTk6MTU6NDY6MTEgLTA3MDBdICJIRUFEIC9vcGVuLXNvdXJjZS9tYXJrZXRzIEhUVFAvMi4wIiAyMDQgMjExNDkiIiIKcGF0dGVybiA9IHInJycKKD9QPGhvc3Q+XGQrKD86XC5cZCspezN9KSAjIDErIGRpZ2l0cyBhbmQgMyBvY2N1cnJlbnNlcyBvZiAuIGFuZCAzIGRpZ2l0cwpccytcUytccysgICAgICAgICAgICAgICAgICMgMSsgd2hpdGVzcGFjZXMsIDErIG5vbi13aGl0ZXNwYWNlcywgMSsgd2hpdGVzcGFjZXMKKD9QPHVzZXJfbmFtZT5cUyspXHMrXFsgICAjIDErIG5vbi13aGl0ZXNwYWNlcyAoR3JvdXAgInVzZXJfbmFtZSIpLCAxKyB3aGl0ZXNwYWNlcyBhbmQgWwooP1A8dGltZT5bXlxdXFtdKilcXVxzKyAgICMgR3JvdXAgInRpbWUiOiAwKyBjaGFycyBvdGhlciB0aGFuIFsgYW5kIF0sIF0sIDErIHdoaXRlc3BhY2VzCiIoP1A8cmVxdWVzdD5bXiJdKikiICAgICAgIyAiLCBHcm91cCAicmVxdWVzdCI6IDArIG5vbi0iIGNoYXJzLCAiCicnJwpmb3IgaXRlbSBpbiByZS5maW5kaXRlcihwYXR0ZXJuLGxvZ2RhdGEscmUuVkVSQk9TRSk6CiAgICBwcmludChpdGVtLmdyb3VwZGljdCgpKQ==
{'host': '159.253.153.40', 'user_name': '-', 'time': '21/Jun/2019:15:46:10 -0700', 'request': 'POST /e-business HTTP/1.0'}
{'host': '136.195.158.6', 'user_name': 'feeney9464', 'time': '21/Jun/2019:15:46:11 -0700', 'request': 'HEAD /open-source/markets HTTP/2.0'}