<?php
// your code goes here
$regex = '{
(?(DEFINE)
(?<number> (?: -? (?: (?= [1-9]|0(?!\d) ) \d+ (?:\.\d+)? ) | \.\d+ ) )
(?<variable> (?: \bM\b ) )
(?<clause> (?:
(?&variable) \s* [<>=] \s* (?&number) |
(?&variable) \s+ between \s+ (?&number) \s+ and \s+ (?&number)
))
)
(?&clause)
}x';
$str = '(a > 3) and ( b + c = 4 and M < 4) and (d + e = 6 and M between 4 and 6) and z>10';
foreach ($matches[0] as $m) {
echo $m. PHP_EOL;
}
}
PD9waHAKCi8vIHlvdXIgY29kZSBnb2VzIGhlcmUKJHJlZ2V4ID0gJ3sKICAgICg/KERFRklORSkKICAgICAgICg/PG51bWJlcj4gICAgKD86IC0/ICg/OiAoPz0gWzEtOV18MCg/IVxkKSApIFxkKyAoPzpcLlxkKyk/ICkgfCBcLlxkKyApICkKICAgICAgICg/PHZhcmlhYmxlPiAgKD86IFxiTVxiICkgKQogICAgICAgKD88Y2xhdXNlPiAgICAoPzogCiAgICAgICAgICAgICAgICAgICAgICAgICAoPyZ2YXJpYWJsZSkgXHMqIFs8Pj1dIFxzKiAoPyZudW1iZXIpIHwKICAgICAgICAgICAgICAgICAgICAgICAgICg/JnZhcmlhYmxlKSBccysgYmV0d2VlbiBccysgKD8mbnVtYmVyKSBccysgYW5kIFxzKyAoPyZudW1iZXIpCiAgICAgICAgICAgICAgICAgICAgICkpCiAgICApCiAgICAoPyZjbGF1c2UpCn14JzsKCiRzdHIgPSAnKGEgPiAzKSBhbmQgKCBiICsgYyA9IDQgYW5kIE0gPCA0KSBhbmQgKGQgKyBlID0gNiBhbmQgTSBiZXR3ZWVuIDQgYW5kIDYpIGFuZCB6PjEwJzsKaWYgKHByZWdfbWF0Y2hfYWxsKCRyZWdleCwgJHN0ciwgJG1hdGNoZXMpKSB7CiAgICBmb3JlYWNoICgkbWF0Y2hlc1swXSBhcyAkbSkgewogICAgICBlY2hvICRtLiBQSFBfRU9MOwogICAgfQp9