import re
numeric_regex = r'''
[-+]? # pos or neg
(?:
\d*\.\d+ # float (ie .1 and 1.1)
|
\d+ \.? # int (with trailing periods ie 1.)
)'''
default_regex = rf'''
\|.*? # | and 0+ whitespaces
({numeric_regex}) # Capturing group: all digits
$ # end of the string
'''
logic = 'xxx -> 31223.1 | xxx 1.1'
m = re.search(default_regex, logic, re.VERBOSE)
if m:
print(m.group(1))
aW1wb3J0IHJlCm51bWVyaWNfcmVnZXggPSByJycnCiAgICAgICAgICAgICAgICBbLStdPyAgICAgICAgICAgICAgICAgICAgIyBwb3Mgb3IgbmVnCiAgICAgICAgICAgICAgICAoPzoKICAgICAgICAgICAgICAgICAgXGQqXC5cZCsgICAgICAgICAgICAgICAjIGZsb2F0IChpZSAuMSBhbmQgMS4xKQogICAgICAgICAgICAgICAgICB8IAogICAgICAgICAgICAgICAgICBcZCsgXC4/ICAgICAgICAgICAgICAgICMgaW50ICh3aXRoIHRyYWlsaW5nIHBlcmlvZHMgaWUgMS4pCiAgICAgICAgICAgICAgICApJycnCgpkZWZhdWx0X3JlZ2V4ID0gcmYnJycKICAgICAgICAgICAgICAgIFx8Lio/ICAgICAgICAgICAgICAgICAgICAjICB8IGFuZCAwKyB3aGl0ZXNwYWNlcwogICAgICAgICAgICAgICAgKHtudW1lcmljX3JlZ2V4fSkgICAgICAgICMgQ2FwdHVyaW5nIGdyb3VwOiBhbGwgZGlnaXRzCiAgICAgICAgICAgICAgICAkICAgICAgICAgICAgICAgICAgICAgICAgIyBlbmQgb2YgdGhlIHN0cmluZwonJycKbG9naWMgPSAneHh4IC0+IDMxMjIzLjEgfCB4eHggMS4xJwptID0gcmUuc2VhcmNoKGRlZmF1bHRfcmVnZXgsIGxvZ2ljLCByZS5WRVJCT1NFKQppZiBtOgoJcHJpbnQobS5ncm91cCgxKSk=