regex จับคู่ค่าที่คั่นด้วยลูกน้ำตามลำดับใด ๆ ได้อย่างไร [ซ้ำ]
Aug 19 2020
ฉันกำลังจัดการกับบรรทัดบันทึกที่มีค่าที่คั่นด้วยเครื่องหมายจุลภาคสำหรับฟิลด์เฉพาะ -
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
ฉันพยายามเขียน regex ใน perl เพื่อให้ตรงกับค่าเหล่านี้ -
=~/^(?=.*xyz=)(?=.*xyz_xyztest_27_jun_2019_2:[\da-f]+)(?=.*a_test_case_id-20190624.1:[\da-f]+\|[\da-f]+)/
แต่ดูเหมือนจะไม่ตรงกัน ฉันพลาดอะไรไปรึเปล่า? ขอบคุณ
คำตอบ
PolarBear Aug 19 2020 at 13:27
คำถามของ OP นั้นคลุมเครือโดยไม่มีตัวอย่างผลลัพธ์ / ผลลัพธ์ที่ต้องการ
โค้ดต่อไปนี้จะถือว่าฟิลด์ที่คั่นด้วย,
และคู่ตัวแปร / ค่าที่คั่นด้วย=:
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
เอาท์พุท
$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'
};