Это не так сложно. Начните с регулярного выражения, которое может соответствовать «нетронутому» выводу, что-то вроде
\$[0-9]+(\.[0-9]{2})?
Теперь просто замените сомнительных персонажей их альтернативами.
[$S][0-9SIl]+([.,][0-9SIl]{2})?
Это может дать вам ложные срабатывания, поскольку вы "найдете" $1
в предложении типа "Я читаю SI для новостей о бейсболе и баскетболе" (SI - это сокращение от журнала Sports Illustrated , но это неизбежно только с помощью регулярных выражений.
После того как вы сделали совпадение, преобразовав , результат в его предполагаемую правильную форму прост: замените любой начальный S
на $
, любой ,
на .
и любой другие S
с 5
.