<?php
$re = '/(\w+) (subiu|caiu) (?:.*?) (\d+m)/';
$str = 'O gato subiu no telhado de 10m, um homem jogou-lhe uma pedra e ele caiu de uma altura de 20m.';
foreach($matches as $match) {
}
// Saídas:
// string(14) "gato subiu 10m"
// string(12) "ele caiu 20m"
PD9waHAKCiRyZSA9ICcvKFx3KykgKHN1Yml1fGNhaXUpICg/Oi4qPykgKFxkK20pLyc7CiRzdHIgPSAnTyBnYXRvIHN1Yml1IG5vIHRlbGhhZG8gZGUgMTBtLCB1bSBob21lbSBqb2dvdS1saGUgdW1hIHBlZHJhIGUgZWxlIGNhaXUgZGUgdW1hIGFsdHVyYSBkZSAyMG0uJzsKCnByZWdfbWF0Y2hfYWxsKCRyZSwgJHN0ciwgJG1hdGNoZXMsIFBSRUdfU0VUX09SREVSLCAwKTsKCmZvcmVhY2goJG1hdGNoZXMgYXMgJG1hdGNoKSB7CiAgdmFyX2R1bXAoaW1wbG9kZSgnICcsIGFycmF5X3NsaWNlKCRtYXRjaCwgMSkpKTsKfQoKLy8gU2HDrWRhczoKLy8gc3RyaW5nKDE0KSAiZ2F0byBzdWJpdSAxMG0iCi8vIHN0cmluZygxMikgImVsZSBjYWl1IDIwbSI=