As an example I have the following sentence:
texto = O gato subiu no telhado de 10m, um homem jogou-lhe uma pedra e ele caiu de uma altura de 20m.
I want to extract the following information:
(O gato subiu 10m, O gato caiu 20m)
I tried:
(gato).*(subiu|caiu).*(?=m)
And it only returned me
gato subiu 10m
.
I can use tb:
>>search_1=re.findall(re.compile('gato.*subiu.*(?=m)'),texto)
>>search_1=[gato subiu 10]
>>search_2=re.findall(re.compile('gato.*caiu.*(?=m)'),texto)
>>search_2=[gato caiu 20]
and then the two lists together.
But I still believe there should be a more optimized way to write this in just one line of code.
The sentences always respect this order [gato / palavra / número seguido de "m"]