Regex falha quando o padrão envolve cifrão ($)

Estou com um problema quando se trata de sub-padrões correspondentes que envolvem o cifrão. Por exemplo, considere o seguinte pedaço de texto:

Regular Price: $20.50       Final Price: $15.20
Regular Price: $18.99       Final Price: $2.25
Regular Price: $11.22       Final Price: $33.44
Regular Price: $55.66       Final Price: $77.88

Eu estava tentando combinar os conjuntos de preços Regular / Final com a seguinte expressão regular, mas simplesmente não estava funcionando (nenhuma correspondência):
preg_match_all("/Regular Price: \$(\d+\.\d{2}).*Final Price: \$(\d+\.\d{2})/U", $data, $matches);

Eu escapei do cifrão, então o que dá?

questionAnswers(2)

yourAnswerToTheQuestion