BUG: read_csv not recognizing numbers appropriately when decimal is set
- [x] closes #31920
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

The old regex was shorter but pretty buggy.

Let's assume ``decimal=","`` and ``thousands="."``

For example something like ``1a.2,3`` was interpreted as numeric by the regex and converted to ``1a2.3``, because the ``.`` was not escaped in the regex.
Also something like ``1,2,3`` was interpreted as numeric by the regex and converted to ``1.2.3``. 

This one is not quite finished. We have to define a few thousand separator related things:

How strict would we want to be? Should ``1.2,3`` be interpreted as numeric and be converted to ``12.3`` or is only something like ``1.234,5`` relevant as thousands separator? C Engine validation is not strict
Additionally should ``,2`` be the number ``0.2``? -> Currently it is, because the C engine behaves the same