내 요구 사항은 + (예 : ABC + DEF)와 문자열을 전달하는 것입니다. 그리고 그것은 actual_state에 대한 어떤 값과도 일치해야합니다. 값은 ABC+DEF ABC+DEF, ABC+DEF,,
등이 될 수 있습니다. ABC + DEF 뒤에 하나 이상의 쉼표가있을 수 있습니다. 하지만 ABC+DEF, PQR-SL
과 일치해서는 안됩니다.! ~ 정규식에서 이해할 수 없습니다
아래 코드는 내가 뭘하려 니펫을 : 내가 ABC+DEF
를 통과 할 경우
sub verify_state{
my $expected_state = shift;
my $vol = 'vol';
my $actual_state = 'ABC+DEF,';
print "Verify backend state for $vol\n";
print "Expected backend state for $vol = $expected_state\n";
print "Actual backend state for $vol = $actual_state\n";
if ($expected_state !~ /$actual_state,*$/) {
print
"Expected state was $expected_state but got $actual_state for $vol\n"
;
return 0;
}
return 1;
}
my $val = verify_state('ABC+DEF');
print $val,"\n";
은이 날 1을 반환해야한다. 0 값 ABC+DEF ABC+DEF, ABC+DEF,,
가 특정 키 등의 해시 값의 일환으로 오는되기 때문에 내가 my $actual_state = 'ABC+DEF,';
을 쓴 이유는 ABC+DEF, PQR-SL
전달됩니다. my $actual_state = $status->{state};
.
설명이 명확하지 않습니다. 질문을 편집하고 입력 한 각 문자열에 대한 예상 출력 목록을 만들 수 있습니까? 당신의 패턴이 잘못된 것처럼 들리지만, 당신이하려는 것을 이해하지 못합니다. – simbabque
'! ~'는 *가 *와 일치하지 않는다는 것을 의미합니다 (단지'= ~'의 논리적 반대입니다.) – rustyx
@simbabque, 제 경우의 actual_state는 ABC + DEF ABC + DEF, ABC + DEF ,, '내가 통제 할 수 없듯이. 그러나 내가 지나가고있는 것은 여기서 상수이다. 즉'ABC + DEF'이다. 나는 부정적으로 ABC + DEF를 actual_state와 함께 거기에 일치시키는 것을 시도하고있다. 나는 ABC + DEF! ~ ABC + DEF 또는 ABC + DEF! ~ ABC + DEF, 또는 ABC + DEF! ~ ABC + DEF ,,를 의미합니다. 모든 경우에 틀렸고 돌아와야합니다. 1 – Satya