Virgülle ayrılmış değerleri herhangi bir sırada yeniden eşleştirme nasıl yapılır? [çiftleme]
Aug 19 2020
Belirli bir alan için virgülle ayrılmış bir değer içeren bir günlük satırı ile uğraşıyorum -
xyz=,xyz_xyztest_27_jun_2019_2:4000,a_test_case_id-20190624.1:7|431
Bu virgülle ayrılmış değerlerin günlük kaydı herhangi bir sırada gerçekleşebilir . Örneğin -
xyz=,a_test_case_id-20190624.1:7|431,xyz_xyztest_27_jun_2019_2:4000
Perl'de bu değerleri eşleştirmek için bir normal ifade yazmaya çalışıyorum -
=~/^(?=.*xyz=)(?=.*xyz_xyztest_27_jun_2019_2:[\da-f]+)(?=.*a_test_case_id-20190624.1:[\da-f]+\|[\da-f]+)/
Ama bu eşleşmiyor gibi görünüyor. Bir şey mi kaçırıyorum? Teşekkürler
Yanıtlar
PolarBear Aug 19 2020 at 13:27
OP'nin sorusu, istenen sonuç / çıktı örneği olmaksızın doğası gereği belirsizdir.
Aşağıdaki kod, ile ayrılmış alanların ,
ve ile ayrılmış değişken / değer çiftlerinin olduğunu varsayar.=:
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
Çıktı
$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'
};
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'