2
나는 펄을 배우기 시작했고 정규 표현식을 사용하여 간단한 버블 정렬을 작성하고 있습니다. 그러나, 나는 제대로 정렬 (알파벳순으로, 공백으로 구분) 얻을 수 없습니다. 그것은 단지 같은 문자열을 반환 끝납니다. 누군가 도울 수 있습니까? 정말 간단하다고 확신합니다. 감사 :Perl 정규식을 사용하여 버블 정렬 작성하기
#!/usr/bin/perl
use warnings;
use strict;
my $document=<<EOF;
This is the beginning of my text...#more text here;
EOF
my $continue = 1;
my $swaps = 0;
my $currentWordNumber = 0;
while($continue)
{
$document =~ m#^(\w+\s+){$currentWordNumber}#g;
if($document =~ m#\G(\w+)(\s+)(\w+)#)
{
if($3 lt $1)
{
$document =~ s#\G(\w+)(\s+)(\w+)#$3$2$1#;
$swaps++;
}
else
{
pos($document) = 0;
}
$currentWordNumber++;
}
else
{
$continue = 0 if ($swaps == 0);
$swaps = 0;
$currentWordNumber = 0;
}
}
print $document;
해결 : 문제를 파악했습니다. 한 마디로 구두점을 고려하지 않았습니다.
왜 정규식과 버블 정렬? – nhahtdh
나는 펄을 배우려고하고 있는데, "Perl 시작"이라는 책에서 비슷한 예를 보았다. 나는 그것을 복제하려고 시도하고있다 – Nosrettap
이것은 올바른 생각을하는 것처럼 들린다. 올바른 작업을위한 "적절한 도구"가 나온다. 정규 표현식은 어떤 종류의 패턴을 따르는 것으로 알려진 텍스트를 매칭/식별하고 변경하기에 좋다. 이름. 버블 정렬은 이런 종류의 문제가 아닙니다. Perl : 물론이지. 정규식 : 안돼. – lxop