Foros del Web » Programando para Internet » PHP »

Reglar expression

Estas en el tema de Reglar expression en el foro de PHP en Foros del Web. Estoy atascado con una expresión regular un poco "compleja" Dado el texto Código: Fase 1: 0.00000112 % 4 Fase 2: 0.00000117 % 8 Necesito extraer ...
  #1 (permalink)  
Antiguo 03/03/2018, 19:23
Avatar de djsos  
Fecha de Ingreso: septiembre-2007
Ubicación: Madrid-España
Mensajes: 374
Antigüedad: 16 años, 7 meses
Puntos: 14
Reglar expression

Estoy atascado con una expresión regular un poco "compleja"

Dado el texto
Código:
Fase 1: 0.00000112 % 4
Fase 2: 0.00000117 % 8
Necesito extraer de cada linea el float que hay en medio, necesitaría algo así
Código:
0.00000112
0.00000117
Optimizado ya sería perfecto para
Código:
[
["fase" => 0.00000112, "estado": 4]
["fase" => 0.00000117, "estado": 8]
]
He intentado cosas como:
Código:
\D+(:|.)\s\d\s% \d+
El paréntesis es porque hay veces que el que copia los datos pone . en vez de :

Llevo horas en http://www.phpliveregex.com/ pero no doy con la clave,si alguien pudiera ayudarme sería genial
__________________
Es de bien nacidos ser agradecidos.
Desarrollo de software a medida | TPV Comercios
  #2 (permalink)  
Antiguo 04/03/2018, 06:47
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Reglar expression

Manito prueba asi:

Código PHP:
Ver original
  1. $cadena = 'Fase 1: 0.00000112 % 4';
  2. preg_match('/[0-9]{1,20}+[.]+[0-9]{2,20}/', $cadena, $sale, PREG_OFFSET_CAPTURE);
  3. var_dump($sale);

eso retorna:
array(1) { [0]=> array(2) { [0]=> string(10) "0.00000112" [1]=> int(8) } }

Esta línea [0-9]{1,20} indica que busque números antes del punto con una longitud de entre 1 y 20 digitos.

Esta [0-9]{2,20} realiza igual trabajo, pero después del punto.

ya allí juegas con las longitudes mínimas y máximas si es que estas tienen muchas variaciones, pues dependiendo de las formulas los float podrían tener cualquier cantidad de caracteres de longitud.

VER MUESTRA
__________________
[email protected]
HITCEL

Última edición por xfxstudios; 04/03/2018 a las 10:52

Etiquetas: expression
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:56.