online escape python regex

escape - python regex space



Extracto flotante/doble valor (4)

¿Cómo extraigo un valor doble de una cadena usando regex?

import re pattr = re.compile(???) x = pattr.match("4.5")


Aquí está la manera fácil. No use expresiones regulares para tipos incorporados.

try: x = float( someString ) except ValueError, e: # someString was NOT floating-point, what now?


Para los valores de parse int y float (separador de puntos):

re.findall( r''/d+/.*/d*'', ''some 12 12.3 0 any text 0.8'' )

resultado:

[''12'', ''12.3'', ''0'', ''0.8'']


Una perldoc perlretut :

import re re_float = re.compile("""(?x) ^ [+-]?/ * # first, match an optional sign *and space* ( # then match integers or f.p. mantissas: /d+ # start out with a ... ( /./d* # mantissa of the form a.b or a. )? # ? takes care of integers of the form a |/./d+ # mantissa of the form .b ) ([eE][+-]?/d+)? # finally, optionally match an exponent $""") m = re_float.match("4.5") print m.group(0) # -> 4.5

Para extraer números de una cadena más grande:

s = """4.5 abc -4.5 abc - 4.5 abc + .1e10 abc . abc 1.01e-2 abc 1.01e-.2 abc 123 abc .123""" print re.findall(r"[+-]? *(?:/d+(?:/./d*)?|/./d+)(?:[eE][+-]?/d+)?", s) # -> [''4.5'', ''-4.5'', ''- 4.5'', ''+ .1e10'', '' 1.01e-2'', # '' 1.01'', ''-.2'', '' 123'', '' .123'']


un flotador como expresión regular en la fuerza bruta. Hay pequeñas diferencias con la versión de JF Sebastian:

import re if __name__ == ''__main__'': x = str(1.000e-123) reFloat = r''(^[+-]?/d+(?:/./d+)?(?:[eE][+-]/d+)?$)'' print re.match(reFloat,x) >>> <_sre.SRE_Match object at 0x0054D3E0>