$re = '/(?(DEFINE)(?\'NAMESPACE\'\w*::))(?#r)(?(DEFINE)(?\'CONSTANT\'("(?:[^"\\\\]|\\\\.)*")|(\d+\.?\d*f?)))(?#r)(?(DEFINE)(?\'VARIABLE\'(?P>NAMESPACE)*([A-Za-z_]\w*\.)*[A-Za-z_]\w*))(?#r)(?(DEFINE)(?\'OPERAND\'(\+|-)*((?P>VARIABLE)|(?P>CONSTANT))))(?#r)(?(DEFINE)(?\'EXPRESSION\'\s*(?P>OPERAND)\s*(\s*[\*\+-\/]\s*(?P>OPERAND))*))(?#r)(?(DEFINE)(?\'ARGUMENTS\'(?P>EXPRESSION)(,\s*(?P>EXPRESSION))*))(?#r)(?(DEFINE)(?\'FUNCTION_CALL\'(?P>VARIABLE)\(\s*(?P>ARGUMENTS)?\s*\)))(?#r)(?P>FUNCTION_CALL)/';
$str = '
[[
::anno::copyright_notice("XXXXX"),
::anno::author("Someone"),
::anno::contributor("")
]]
=
let {
bool tmp0 = false;
material_surface tmp1(
Use_Clearcoat ? ::df::custom_curve_layer(Clearcoat_Center_Level * 0.08f, Clearcoat_Edge_Level, 5.f, 1.f, ::df::microfacet_ggx_smith_bsdf(::math::luminance(::nvidia::core_definitions::blend_colors(color(0.f, 0.f, 0.f), ::base::file_texture(Coat_Roughness_Map, color(0.f, 0.f, 0.f), color(1.f, 1.f, 1.f), ::base::mono_luminance, ::base::texture_coordinate_info(::state::texture_coordinate(0), ::state::texture_tangent_u(0), ::state::texture_tangent_v(0)), float2(0.f, 1.f), float2(0.f, 1.f), ::tex::wrap_repeat, ::tex::wrap_repeat, false).tint, ::base::color_layer_blend, Coat_Roughness_Map_Strength).tint) * ::math::luminance(::nvidia::core_definitions::blend_colors(color(0.f, 0.f, 0.f), ::base::file_texture(Coat_Roughness_Map, color(0.f, 0.f, 0.f), color(1.f, 1.f, 1.f), ';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php