preg_match('/^find(\w+?)Via(\w+?)(?:By(\w+?)(?:And(\w+))?)?$/', $method, $matches)
to pasuje do:
find<Class1>Via<Class2>()
find<Class1>Via<Class2>By<Rule>()
find<Class1>Via<Class2>By<Rule1>And<Rule2>()
a jak dopasować do wielu AND, np:
find<Class1>Via<Class2>By<Rule1>And<Rule2>And<RuleN>()