import re
strings = [
"the owner has a dog",
"the owner has a black and brown dog",
"John has a dog",
"John has a black and brown dog"
]
pattern = r"^[^o\r\n]*(?:(?!\bowner\b)o[^o\r\n]*)*\bdog\b"
for s in strings:
res = re.search(pattern, s)
print(res)
aW1wb3J0IHJlCgpzdHJpbmdzID0gWwoJInRoZSBvd25lciBoYXMgYSBkb2ciLAoJInRoZSBvd25lciBoYXMgYSBibGFjayBhbmQgYnJvd24gZG9nIiwKCSJKb2huIGhhcyBhIGRvZyIsCgkiSm9obiBoYXMgYSBibGFjayBhbmQgYnJvd24gZG9nIgpdCgpwYXR0ZXJuID0gciJeW15vXHJcbl0qKD86KD8hXGJvd25lclxiKW9bXm9cclxuXSopKlxiZG9nXGIiCgpmb3IgcyBpbiBzdHJpbmdzOgogIHJlcyA9IHJlLnNlYXJjaChwYXR0ZXJuLCBzKQogIHByaW50KHJlcyk=