import re
def all_matching( s, pat) :
return pat.search ( s)
input1 = """DIR1\\ FILE1.EXT1\t CONTENT11
DIR1\\ FILE1.EXT1\t CONTENT12
DIR1\\ FILE1.EXT1\t CONTENT13
DIR1\\ FILE2.EXT1\t CONTENT21
DIR2\\ FILE3.EXT2\t CONTENT31
DIR3\\ FILE3.EXT2\t CONTENT11"""
input2 = """DIR1\\ FILE1.EXT1\t CONTENT11
DIR1\\ FILE1.EXT1\t CONTENT12
DIR1\\ FILE1.EXT1\t CONTENT13
DIR1\\ FILE2.EXT1\t CONTENT21
DIR2\\ FILE3.EXT2\t CONTENT31"""
rxs = [ r"^\S *FILE1\S *\t CONTENT11$" , r"^\S *FILE1\S *\t CONTENT12$" , r"^\S *FILE3\S *\t CONTENT11$" ]
pat = re .compile ( r"(?m)\A (?=(?:.*\n )*?{})" .format ( r")(?=(?:.*\n )*?" .join ( [ rx[ 1 :] for rx in rxs] ) ) )
print ( pat.pattern )
if all_matching( input1, pat) :
print ( "input1 matches all rxs" ) # excpected
else :
print ( "input1 do not match all rxs" )
if all_matching( input2, pat) :
print ( "input2 matches all rxs" )
else :
print ( "input2 do not match all rxs" ) # expected because input2 doesn't match wirh rxs[2]
aW1wb3J0IHJlCgpkZWYgYWxsX21hdGNoaW5nKHMsIHBhdCk6CglyZXR1cm4gcGF0LnNlYXJjaChzKQoKaW5wdXQxID0gIiIiRElSMVxcRklMRTEuRVhUMVx0Q09OVEVOVDExCkRJUjFcXEZJTEUxLkVYVDFcdENPTlRFTlQxMgpESVIxXFxGSUxFMS5FWFQxXHRDT05URU5UMTMKRElSMVxcRklMRTIuRVhUMVx0Q09OVEVOVDIxCkRJUjJcXEZJTEUzLkVYVDJcdENPTlRFTlQzMQpESVIzXFxGSUxFMy5FWFQyXHRDT05URU5UMTEiIiIKCmlucHV0MiA9ICIiIkRJUjFcXEZJTEUxLkVYVDFcdENPTlRFTlQxMQpESVIxXFxGSUxFMS5FWFQxXHRDT05URU5UMTIKRElSMVxcRklMRTEuRVhUMVx0Q09OVEVOVDEzCkRJUjFcXEZJTEUyLkVYVDFcdENPTlRFTlQyMQpESVIyXFxGSUxFMy5FWFQyXHRDT05URU5UMzEiIiIKCnJ4cyA9IFtyIl5cUypGSUxFMVxTKlx0Q09OVEVOVDExJCIsciJeXFMqRklMRTFcUypcdENPTlRFTlQxMiQiLHIiXlxTKkZJTEUzXFMqXHRDT05URU5UMTEkIl0KcGF0ID0gcmUuY29tcGlsZSggciIoP20pXEEoPz0oPzouKlxuKSo/e30pIi5mb3JtYXQociIpKD89KD86LipcbikqPyIuam9pbihbcnhbMTpdIGZvciByeCBpbiByeHNdKSkgKQpwcmludChwYXQucGF0dGVybikKCmlmIGFsbF9tYXRjaGluZyhpbnB1dDEscGF0KToKCXByaW50KCJpbnB1dDEgbWF0Y2hlcyBhbGwgcnhzIikgIyBleGNwZWN0ZWQKZWxzZToKCXByaW50KCJpbnB1dDEgZG8gbm90IG1hdGNoIGFsbCByeHMiKQoKaWYgYWxsX21hdGNoaW5nKGlucHV0MixwYXQpOgoJcHJpbnQoImlucHV0MiBtYXRjaGVzIGFsbCByeHMiKQplbHNlOgoJcHJpbnQoImlucHV0MiBkbyBub3QgbWF0Y2ggYWxsIHJ4cyIpICMgZXhwZWN0ZWQgYmVjYXVzZSBpbnB1dDIgZG9lc24ndCBtYXRjaCB3aXJoIHJ4c1syXQ==