Sublime Text 2, regexy, znajdź i zamień

Ostatnio spotkałem się z ciekawym zagadnieniem. Dostałem pewne dane produktów spożywczych, które musiałem przeparsować do JSONa. Przykładzik:

{
    "name": "Banany",
    "base_measure": 100,
    "unit": "g",
    "carbs": 26.95,
    "kcal": 105  ,
    "sugar":  14,43 g ,
    "fat":  0,39 g ,
    "proteins":  1,29 g ,
    "fibre":  3,1 g
},
 

Wszystko było super, oprócz tego, że wartości odżywcze były zapisane w gramach - liczba + "g" . W programie wartości te musiały występować jako liczby, więc zapis "14,3g" odpadał.
Trzeba było zamienić te wartości na liczby, ale tak, żeby liczba została a skasowało się "g". Usunięcie "g" z całego pliku nie wchodziło w grę, ponieważ jest wiele innych słów zawierających literę g.

Poszukałem więc sposóbu na rozwiązanie tego problemu i z pomocą przyszły regex'y.
W find and replace w sekcji find wystarczy wpisać:
(\d+,\d+) g
a replace:
\1

Już tłumaczę o co chodzi.
Regex wyszukuje cyfry (1 lub więcej), potem przecinek, potem znowu cyfry (1 lub więcej), spacji i na końcu "g". A co z nawiasem? Tam nie ma nawiasów!
W tym magia. To jest tzw. grupa. Dzięki temu możemy w replace się do niej odwołać i wykorzystać. Numerowanie grupy liczy się od 1.
Wynikiem powyższej operacji jest:

{
    "name": "Banany",
    "base_measure": 100,
    "unit": "g",
    "carbs": 26.95,
    "kcal": 105  ,
    "sugar":  14,43 ,
    "fat":  0,39 ,
    "proteins":  1,29 ,
    "fibre":  3,1
},

Pozostaje jeszcze zamiana przecinków na kropki.
Znowu nie możemy zamienić wszystkich przecinków, bo nam się JSON rozsypie.
Spóbujmy wykorzystać poprzedni trick.
Find:
("\w+": +\d+),(\d+)
Replace:
\1.\2

Co tłumaczy - weź ", potem litery (1 lub więcej), potem ":, następnie spacje (1 lub więcej) i cyfry (1 lub więcej). Potem przecinek i na końcu cyfry (1 lub więcej).
I znowu nawiasy... tym razem mamy 2 grupy, dzięki czemu stosując powyższego replace'a uzyskamy to, co oczekiwaliśmy:

{
    "name": "Banany",
    "base_measure": 100,
    "unit": "g",
    "carbs": 26.95,
    "kcal": 105  ,
    "sugar":  14.43 ,
    "fat":  0.39 ,
    "proteins":  1.29 ,
    "fibre":  3.1
},