샘플 입력이 작업을 수행하는 함수를 필요 :펄에서
ATAT
GATATATGCATATACTT
샘플 출력 :
1 3 9
을 내가 정규식 부분을 얻을 수 있지만, 우리는 위치 인스턴스를 사용하는 방법을 이해하지 않습니다.
샘플 입력이 작업을 수행하는 함수를 필요 :펄에서
ATAT
GATATATGCATATACTT
샘플 출력 :
1 3 9
을 내가 정규식 부분을 얻을 수 있지만, 우리는 위치 인스턴스를 사용하는 방법을 이해하지 않습니다.
내장 된 배열 @-
에는 마지막으로 성공한 정규식과 그 캡처가 대상 문자열에 나타나는 위치가 저장됩니다. 등 $-[1]
이와 함께 등
캡처 $1
의 위치를 누르고있는 동안 그래서 $-[0]
는 전체 패턴이 일치하는 경우라고, 당신은 기대 미리을 대신 간단한 정규식의, 그렇지 않으면 정규 표현식을 사용할 필요가 엔진은 발견 된 이전 일치 끝 부분 이후에만 후속 일치 항목을 찾고 을 찾기 시작할 것이므로 중복되는 항목을 찾을 수 없습니다.
이 코드는 사용자가 질문하는대로 수행합니다.
use strict;
use warnings;
my $seq = 'GATATATGCATATACTT';
my @offsets;
push @offsets, $-[0] while $seq =~ /(?=ATAT)/g;
print "@offsets\n";
출력
1 3 9
정규식이 필요, index
는 모든 일을 수행 할 수 있습니다
#!/usr/bin/perl
use warnings;
use strict;
my $substring = 'ATAT';
my $string = 'GATATATGCATATACTT';
my @positions;
my $pos = -1;
while (-1 != ($pos = index $string, $substring, $pos + 1)) {
push @positions, $pos;
}
print "@positions\n";
을