Search for multiple patterns using regex (and)

Question:

I want to search for multiple patterns using python regex. In general I am reading data from the log file, line by line and searching for a pattern. If it matches I am extracting timestamp from that line. I have problem with first part. Right now reading is done in done in more pythonic way (I belive):

app_name = "example"
pid = 12341234
txt ="Mar 22 20:20:52.372          App1      0      Loginfo:  Application was started (example, PID: 12341234)"

if "Application was started" and pid and app_name in txt:
    print("Match found") # Prints found
else:
    print("Match not found")

It works fine but I was requested to use regex instead. I did some tries but the problem is that I am looking for specific data to be match (I do not want to match any PID in range 0-PID_MAX but a specific value):

app_name = "example"
pid = 12341234
txt ="Mar 22 20:20:52.372          App1      0      Loginfo:  Application was started (example, PID: 12341234)"

search_str = re.compile(f"/(Application was started)({app_name}),({pid})/")
if search_str.match(txt):
    print("Match found")
else:
    print("Match not found") # Prints not found

I do not know how can I use regex with AND to match all the values in that string?

Asked By: Daniel

||

Answers:

In your case you need to escape parenthesis (...) and denote optional whitespaces s* in regex pattern, then apply pattern.search for a quick check for match:

txt ="Mar 22 20:20:52.372          App1      0      Loginfo:  Application was started (example, PID: 12341234)"

pat = re.compile(fr"Application was started ({app_name},s*PID:s*{pid})")
if pat.search(txt):
    print("Match found")
else:
    print("Match not found") 
Answered By: RomanPerekhrest
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.