How to move search matches to bottom of file?

Starting with

"One": 1
"Two": 2
"Three": 3

how can we achieve the desired outcome:

"One":
"Two":
"Three":
1
2
3

We don’t really care whether the colon and/or space is included, we just want anything after : moved to the bottom in order.

All the examples I could find are moving entire lines up/down with :g but here we want to move parts of the line down. For fixed-width fields this could be done with visual block mode, but we want to support the general case. I was able to do it by making a macro, but would ideally do it with a normal mode search/replace command.