2016-10-18 4 views
-1

운영자에게 ... 중복으로 표시하기 전에 질문을 읽으십시오.Perl의 정규식과 일치하는 정규식.

여기에 스칼라를 사용하는 정규 표현식을 사용하고 있습니다. 그래도 처음. 나는 코드를 넣을 것이다. 그것은

내가 여기서 뭔가를 분명 실종 ..

#!/usr/bin/perl 

my $regex = "PM*C"; 
my $var = "PM_MY_CALC"; 

if($var =~ m/$regex/){ 
    print "match \n"; 
} 

else{ 

    print "no match\n"; 
} 

나는 "일치하는"입니다 얻을 출력 분명 스스로해야 하는가? 분명히 그것은 다른 물건과 일치하지 않았다. 그래서 그냥 정규식과 변수를 동일하게 확인했다. 아직 일치하지 않는다.

것은 내가

if($var =~ $regex){ 

perlMonks에서 일부 검색을 기반으로 .. 너무이 일을 시도했습니다.

은 당신은 여전히 ​​그것은 아니다 ..

Detect exact string value of scalar in regex matching

시간과 자존심을 저장하십시오 ...이 중복이며, 여기이 질문에 가고 싶은 생각한다면, 그것은 않습니다 내 질문에 대답하지 .. 그리고이 질문에 대한 시간을 좀 진정으로 대답을 돕고 싶어하는 사람까지.

+1

정규식이 잘못되었습니다. ''PM * C ''는 리터럴 P와 일치하고, 0-n 문자 M 다음에 C가옵니다. 그래서'PC','PMC','PMMC','PMMMMMC'와 일치합니다. – PerlDuck

+0

@PerlDuck 감사합니다. 그게 .. 내가 그걸 바로 잡도록 도와 줄 수 있니? – ArunMKumar

+0

문제는 스칼라 사용과 관련이 없습니다. ' "PM_MY_CALC"= ~/PM * C /'도 일치하지 않습니다. – melpomene

답변

2

*은 Perl 정규 표현식의 와일드 카드가 아니라 수량 자입니다. 정규식으로서 PM*C을 의미하고, 그 다음에 0 이상 Ms, 그 다음에 C이 뒤 따른다. 예를 들어, 다음과 같은 문자열을 일치 : 당신이 "아무것도"일치해야하는 경우, .*를 사용

PC 
PMC 
PMMC 
PMMMC 
xxxPCxxx 

.

+1

"정말 아무것도"와 일치해야한다면'/ s' 플래그도 추가하십시오. :-) – melpomene

+0

cool, thanks guys .. "PMC_MY_CALC_IS_FINE"으로 var를 사용하더라도 해결책은 하나만 있습니다.나는 문자열의 끝까지 일치하는 정규식을 원한다. 어떻게해야합니까? – ArunMKumar

+1

@ArunMKumar ['perldoc perlretut'] (http://perldoc.perl.org/perlretut.html) ("앵커"를 찾으십시오). – melpomene

관련 문제