¿Cuál es la notación para cualquier número en re? Me gusta si estoy buscando una cadena para cualquier número, positivo o negativo. He estado usando \ d + pero no puedo encontrar 0 o -1Expresión regular para encontrar cualquier número en una cadena
Respuesta
Buscando positiva, negativa y/o decimales, podría utilizar [+-]?\d+(?:\.\d+)?
>>> nums = re.compile(r"[+-]?\d+(?:\.\d+)?")
>>> nums.search("0.123").group(0)
'0.123'
>>> nums.search("+0.123").group(0)
'+0.123'
>>> nums.search("123").group(0)
'123'
>>> nums.search("-123").group(0)
'-123'
>>> nums.search("1").group(0)
'1'
Esto no es muy inteligente acerca de líder/ceros, por supuesto:
>>> nums.search("0001.20000").group(0)
'0001.20000'
Editar: corrigió la expresión regular anterior para encontrar números de un solo dígito.
Si quiere añadir soporte para la forma exponencial, tratar [+-]?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?
:
>>> nums2 = re.compile(r"[+-]?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?")
>>> nums2.search("-1.23E+45").group(0)
'-1.23E+45'
>>> nums2.search("0.1e-456").group(0)
'0.1e-456'
>>> nums2.search("1e99").group(0)
'1e99'
Corrígeme pero tu expresión regular no coincidirá con los números de un solo dígito? –
Ah, buena captura.Lo actualizaré para hacer que esa parte post-decimal sea opcional. –
+1)) Para una buena solución –
\d
debería estar bien para hacer coincidir cualquier entero no negativo. \d
es equivalente a [0-9]
(cualquier caracter de un solo dígito) así que por supuesto no coincidirá con números negativos. Añadir un signo negativo opcional en ese caso:
\-?\d+
\d
definitivamente coincidir 0
.
\ d coincidirá con 0 por defecto, por lo que la única necesidad es modificar su expresión regular para coincidir con los valores negativos, lo haga usted simplemente puede utilizar:
import re
re.findall(r'[+-]?\d+', ' 1 sd 2 s 3 sfs 0 -1')
O
import re
re.findall(r'(?<!\S)[+-]?\d+(?!\S)', '234 +1 -10 23jjj ssf54 sdg5dfgdf')
>>> ['234', '+1', '-10']
para que coincida con positi cinco o números negativos, como en -3
o +5
, utilice [+-]?\d+
:
re.findall('[+-]?\d+', 'sfkdjfsdfj-1skjfslkdjf+4') # ['-1', '+4']
Asegúrese de poner el signo negativo al final lo que el compilador entiende que no decir otra cosa.
De acuerdo con python re documentation, \ d coincide con cualquier dígito si el indicador UNICODE no está configurado. Si el indicador está establecido, entonces coincide con cualquier elemento considerado un dígito en esa configuración regional.
No va a coincidir con los números negativos, sin embargo algunas adiciones:
-?\d+
Esto funciona, pero no hay nada número, ya que los números son pequeñas cosas bastante complejas. Pruebe este:
[-+]?\d*\.?\d+([eE][-+]?\d+)?
- 1. Expresión regular [Cualquier número]
- 2. ¿Expresión regular para encontrar una expresión regular?
- 3. expresión regular para cualquier cosa entre []
- 4. Expresión regular solo para longitud: cualquier carácter
- 5. Regex para encontrar un número en una cadena
- 6. Necesito encontrar una expresión regular para cualquier palabra excepto word1 o word2
- 7. Generalización para la expresión regular en cualquier lista
- 8. Interpolando una cadena en una expresión regular
- 9. cómo negar cualquier expresión regular en Java
- 10. Expresión regular para un número hexadecimal?
- 11. Expresión regular para el número decimal
- 12. Expresión regular para número de cuenta bancaria?
- 13. C# expresión regular para que coincida con CUALQUIER carácter?
- 14. expresión regular para encontrar números decimales/float?
- 15. una expresión regular para excluir una palabra/cadena
- 16. una expresión regular para analizar el número de versión
- 17. Expresión regular para alfanumérico
- 18. ¿Hay una expresión regular para detectar una expresión regular válida?
- 19. Definir una expresión regular de JavaScript que coincida con cualquier cosa excepto una cadena en particular
- 20. Expresión regular para que coincida con una cadena específica seguida de un número?
- 21. ¿Cómo uso una expresión regular para unir cualquier cadena, pero al menos 3 caracteres?
- 22. expresión regular para validar cadena hexadecimal
- 23. expresión regular para encontrar caracteres especiales en Java
- 24. Expresión regular para encontrar las direcciones URL dentro de una cadena
- 25. PHP explotar cadena utilizando una expresión regular
- 26. Ayuda para crear una expresión regular
- 27. Usa la expresión regular para encontrar una cadena específica que no está en la etiqueta html
- 28. Php buscar cadena con expresión regular
- 29. Python: encontrar expresión regular en un archivo
- 30. Expresión regular para cualquier número divisible por 60 usando C# .Net?
Pruebe 'r" -? \ D + "'. EDITAR: - no necesita escapar fuera '[]' – Evpok
Regex no lee las cosas tal como son, pero en qué clase de carácter están, por lo que necesita un carácter "-" opcional para hacer coincidir los negativos. Dicho esto, \ d + absolutamente * debería * hacer coincidir 0, está en la clase de caracteres \ d '[0-9] '. – Dylnuge
¿Qué pasa con '1.0e + 3' o' -123.456'? ¿Quieres que coincida con ellos también? –