$re = '/(\w+)\.(\w+)?/umix';
$str = 'a[a]=20&a[]=21
a.a=20&a.=21
a[77]=20&a[]=21
a.77=20&a.=21
a[]=19&a[77]=20&a[]=21
a.=19&a.77=20&a.=21
a[b][]=1&a[b][]=2&a[b]=3&a[b][]=4
a.b.=1&a.b.=2&a.b=3&a.b.=4
a[][]=20&a[][]=21
a..=20&a..=21
a[]=10&a[][]=20&a[][]=21
a.=10&a..=20&a..=21';
$subst = "\1[\2]";
$result = preg_replace($re, $subst, $str);
echo "The result of the substitution is ".$result;
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