¿Cómo hacer coincidir expresiones regulares con valores separados por comas en cualquier orden? [duplicar]
Aug 19 2020
Estoy tratando con una línea de registro que contiene un valor separado por comas para un campo en particular:
xyz=,xyz_xyztest_27_jun_2019_2:4000,a_test_case_id-20190624.1:7|431
El registro de estos valores separados por comas puede ocurrir en cualquier orden . Por ejemplo -
xyz=,a_test_case_id-20190624.1:7|431,xyz_xyztest_27_jun_2019_2:4000
Estoy tratando de escribir una expresión regular en perl para que coincida con estos valores:
=~/^(?=.*xyz=)(?=.*xyz_xyztest_27_jun_2019_2:[\da-f]+)(?=.*a_test_case_id-20190624.1:[\da-f]+\|[\da-f]+)/
Pero esto no parece coincidir. ¿Me estoy perdiendo de algo? Gracias
Respuestas
PolarBear Aug 19 2020 at 13:27
La pregunta de OP es de naturaleza oscura sin una muestra del resultado/salida deseado.
El siguiente código asume que los campos separados por ,
y los pares de variable/valor separados por=:
use strict;
use warnings;
use feature 'say';
use Data::Dumper;
while( <DATA> ) {
chomp;
my %hash;
%hash = split "[,=:]";
say Dumper(\%hash);
}
__DATA__
xyz=,xyz_xyztest_27_jun_2019_2:4000,a_test_case_id-20190624.1:7|431
xyz=,a_test_case_id-20190624.1:7|431,xyz_xyztest_27_jun_2019_2:4000
Producción
$VAR1 = {
'xyz_xyztest_27_jun_2019_2' => '4000',
'a_test_case_id-20190624.1' => '7|431',
'xyz' => ''
};
$VAR1 = {
'xyz' => '',
'xyz_xyztest_27_jun_2019_2' => '4000',
'a_test_case_id-20190624.1' => '7|431'
};