问题描述
我正在处理一个日志行,其中包含用于特定字段的逗号分隔值-
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
我正在尝试在perl中编写一个正则表达式以匹配这些值-
=~/^(?=.*xyz=)(?=.*xyz_xyztest_27_jun_2019_2:[\da-f]+)(?=.*a_test_case_id-20190624.1:[\da-f]+\|[\da-f]+)/
但这似乎不匹配。我想念什么吗? 谢谢
解决方法
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'
};