estoy tratando de capturar la salida de temperatura de los sensores, por el que tengo las siguientes líneas relevantes:Perl: ¿Es buena o mala expresión regular y cómo mejorarla?
temp1: +39.5 C (crit = +105.0 C)
Core 0: +40.0 C (high = +100.0 C, crit = +100.0 C)
Core 1: +40.0 C (high = +100.0 C, crit = +100.0 C)
Sólo necesito la primera temperatura de cada línea (39.5, 40.0, 40.0). La cuestión, por supuesto, es que realmente no puedo en el número de palabra ya que hay un espacio extra en "Núcleo 0"/"Núcleo 1".
He llegado con la siguiente expresión regular que funciona, sin embargo, me han dicho que el uso de .*
es un enfoque algo vago y sucio para regex.
$core_data =~ s/^.*\+(.*)C\ .*$/$1/g;
Me preguntaba, ¿hay una manera más estricta o mejor para lograr esto o estoy haciendo bien?
¿Qué quiere decir por bueno o malo? la eficiencia parece no importar a menos que tengas que unir miles de patrones. No parece ser el caso. – VGE
OTOH, la legibilidad ** es ** importante. Asegúrate de tener un comentario cerca. – pavium
Eficiencia del pozo en nombre del aprendizaje :). También me doy cuenta de que mi expresión regular está produciendo un resultado con un personaje principal en el espacio. No creo que esto importe para mis propósitos, pero aún me gustaría saber cómo deshacerse de él. – DanH