PCRE / Perl regex, ama ben sadece (aşağıdaki özellikleri bağlı olarak) ne istediğini tahmin ediyorum:
/(?:function\s+|\G(?<!^),\s*)([^,{}]+|\{function\s+(?1)\s*(?:,\s*(?1)\s*)*})\s*/g
Example Perl kullanımı:
test('function {function arg1, arg2}, arg3');
test('function foo, {function {function x}, y}, bar');
sub test{
print 'Matched: "', join '", "',
$_[0] =~
/(?:function\s+|\G(?<!^),\s*)
(
[^,{}]+
|
\{function\s+(?1)\s*(?:,\s*(?1)\s*)*}
)
\s*/gx;
print "\"\n";
}
Output:
Matched: "{function arg1, arg2}", "arg3"
Matched: "foo", "{function {function x}, y}", "bar"
Sadece gerektiğinde kaçmak ve preg_match_all kullanmak, PHP sadece iyi çalışması gerekir.
Şartname tho hakkında bir sürü soru:
- Eğer üzerinde eşleşen dize bundan daha başka bir şey var mı?
- Iki argüman her zaman var mı?
- Argümanlar tek bir kelime var mı?
- "Fonksiyonu" bir anahtar kelime ya da bir işlev adı mı?
Daha (gerçek) örnekler lütfen!