this similar question을 읽고 코드를 여러 번 읽은 후에 동일한 원치 않는 출력을 계속받습니다.Perl에서 regex를 사용하여 문자열 내에서 여러 일치 항목 가져 오기
내가 검색하는 문자열이 "어제를 보았습니다"라고 가정 해 봅시다. 정규 표현식은 각 단어 뒤에 을 붙이며 그 뒤에 'a'가 있고 그 뒤에 (선택 사항) 인 5 문자 또는 공백이옵니다.
found 3 matches:
"saw wil"
"wilma yest"
"yesterday"
: 내가 얻을 수있는 다음과 같은 일을 기대하면서 found 2 matches
"s"
"w wilma yesterday"
: 나는 다음과 같은 출력을 얻기에 보관, 그러나
$_ = "I saw wilma yesterday";
if (@m = /(\w+)a(.{5,})?/g){
print "found " . @m . " matches\n";
foreach(@m){
print "\t\"$_\"\n";
}
}
:
내가 쓴 코드는 다음과 같다
내에서 반환 값이 @m
인 것을 알 때까지 $1
및 $2
입니다.
이제 /g
플래그가 켜져 있고 문제가 정규식과 관련이 없다고 생각하면 어떻게하면 원하는 출력을 얻을 수 있습니까?
예상 결과에 '어제'가 아닌 '날'이 왜 있는지 이해할 수 없습니까? –
글쎄, 네 말이 맞아. 방금 편집했습니다. – none
좋아, 너에게 맞는 패턴이있어. –