Come regex abbinare i valori separati da virgola in qualsiasi ordine? [duplicare]
Aug 19 2020
Ho a che fare con una riga di registro che contiene un valore separato da virgola per un particolare campo -
xyz=,xyz_xyztest_27_jun_2019_2:4000,a_test_case_id-20190624.1:7|431
La registrazione di questi valori separati da virgole può avvenire in qualsiasi ordine . Per esempio -
xyz=,a_test_case_id-20190624.1:7|431,xyz_xyztest_27_jun_2019_2:4000
Sto cercando di scrivere una regex in perl per abbinare questi valori -
=~/^(?=.*xyz=)(?=.*xyz_xyztest_27_jun_2019_2:[\da-f]+)(?=.*a_test_case_id-20190624.1:[\da-f]+\|[\da-f]+)/
Ma questo non sembra corrispondere. Mi sto perdendo qualcosa? Grazie
Risposte
PolarBear Aug 19 2020 at 13:27
La domanda di OP è di natura oscura senza un campione del risultato/output desiderato.
Il codice seguente presuppone che i campi siano separati da ,
e le coppie variabile/valore separate da=:
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
Produzione
$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'
};