2012-08-04 4 views
1

펄 분할 함수를 사용하여 패턴의 정의 된 위치에서 문자열을 분리 할 수있는 방법이 있습니까? 예를 들어, @array=split(/pattern/, $string)을 사용하면 split $string의 배열을 얻지 만 패턴으로 정의 된 문자열의 일부가 해당 배열에 없습니다. 분할 할 패턴의 위치를 ​​지정할 수 있습니까? $string의 모든 부분이 @array에 포함되어 있습니까?정의 된 패턴 위치에있는 Perl 분할

+2

당신이 분할 당신이 원하는 어떤 문자열의 종류의 예를 들어 줄 수있는 시간과 장소를 그들을 쪼개고 싶니? – edb

+0

예를 들어, 패턴 "tggg"는 aaaatgggccc 문자열을 aaaa 및 ccc로 분할합니다. 내가 뭘하고 싶은지 패턴 내에서 분할 위치를 정의하고 말할 두 번째 패턴 문자 다음에 문자열을 분할하는 것입니다 : aaaatg 및 ggccc – Daniel

답변

6

예를 들어, 예를 들어 tg 다음에 gg 앞에 한 번에 나누기를 원하는 것처럼 보입니다.

split은 정규 표현식을 사용하므로 둘러보기 어설 션을 사용할 수 있습니다.

예를 들어 Extended Patterns in perlre

에서 그들에 대해 자세히

use strict; 
use warnings; 

my $s = 'aaaatgggccc'; 

my @fields = split /(?<=tg)(?=gg)/, $s; 

print "$_\n" for @fields; 

출력

aaaatg 
ggccc 
+0

이것은 대단해! 고마워, 링크도! – Daniel

0

@ Mat의 답변이 좋으며 아마 내가 사용하는 것입니다.

my $pattern = qr/MY_PATTERN/; 
my @array = /($pattern)($string)?/g; 

/g 수정 반복적으로 일치하는 패턴을 발생합니다 그러나, 완성도,에 맞게 수있는 또 다른 방법이있다. ?은 달성하려는 정확한 효과에 따라 선택 사항입니다.

관련 문제