2014-05-20 5 views
1

이 부분 만 사용자 입력에 액세스하려고합니다. 예 : 사용자가Perl의 Regex를 사용하여 사용자 입력에서 정보 추출

난 단지 테스트를하고 싶지

, 324 (3422)

나는이 시도 된 /file/path/test_324_3422.jpg 같은 파일 이름을 입력 만하면 작동하지 않습니다 :

#!/usr/bin/perl 

if(@ARGV != 1){ 
    print "Error\n"; 
} 
else{ 
    my $input = $ARGV[0]; 
    $input =~ /(.)_([\d]+)_([\d]+)/ 
    print $1, "\n"; 


} 
+1

http://regex101.com/r/sA4fK9 – sshashank124

+0

'당신이 그룹 2와 3의 내용을 표시 할'$ 2'와'$ 3'를 사용하는 경우 $ 1 '은 첫 번째 캡처 그룹을 의미한다. 첫 번째 그룹 설명을'([^ \/_] +)'로 변경하십시오. –

답변

1

캡처 그룹 내의 점 .은 단일 문자와 일치합니다.

그리고 첫 번째 캡처 그룹과 일치하는 $1 만 인쇄하고 있습니다. 캡처 그룹의 일치 항목을 표시하려는 경우에도 $2$3이 필요합니다.

사용자의 요구에 맞지 않는 경우 첫 번째 캡처 그룹에 부정합을 사용하십시오.

my $input =~ /([^\/_]+)_(\d+)_(\d+)/; 
관련 문제