2011-11-16 2 views
1

하나의 문자열로 특정 패턴을 검색하고 싶지만 특정 길이 (최대 길이는 20)로 검색하고 싶습니다. 예 :Perl 일반 표현 패턴 길이

문자열 :

hellokkkkkkkkkkhellokhellokkhellokkkkk 

정규식 :

/(hello.*?hello.*?hello)/ 

하지만 나에게 다음과 같은 패턴

LOC 제공 : 0

hellokkkkkkkkkkhellokhello 

26하지만 난을 내가 원해. 단지 길이가 < 인 두 번째 패턴 (의미는 hellokhellokkhello)이다 .. 어떤 제안?

+0

@TLP : 죄송합니다, 이스케이프 문자 M42 좋아 @ :-( – Toto

+0

은, 그냥 이상한 모습 이유를 모르겠어요 배치했다. – TLP

답변

4

겹치는 일치 항목을 얻으려면 look-ahead을 사용하십시오.

my $string = 'hellokkkkkkkkkkhellokhellokkhellokkkkk'; 
say for 
    grep { length($_) < 20 } 
    $string =~ /(?=(hello.*?hello.*?hello))/g;