Pattern[symb, pat]: pat_head : _head (accordingly with __ and ___). : pat : defaultOptional[pat : symb, default].FullForm[a_b]
FullForm[a:_:b]
Pattern has attribute HoldFirst, so it does not evaluate its name:
x = 2
x_
Nested Pattern assigns multiple names to the same pattern. Still, the last parameter is the default value.
f[y] /. f[a:b,_:d] -> {a, b}
This is equivalent to:
f[a] /. f[a:_:b] -> {a, b}
FullForm:
FullForm[a:b:c:d:e]
f[] /. f[a:_:b] -> {a, b}