2011-09-30 5 views
0

두 개의 다른 서버에서 가져온 두 개의 파일이 있습니다. 이 두 파일에는 일부 축구 팀의 경기가 나와 있습니다. 아시다시피 풋볼 팀은 다른 이름으로 불릴 수 있습니다. 파일에서 동일한 변수를 가져오고 다른 파일에서 다른 변수를 가져 오기 위해 두 파일에서 동일한 축구 일치를 인식 할 수있는 코드를 구현하고 싶습니다. 하나 개의 파일에서 예를 들어 내가라는 경기가 패턴 인식 및 문자열 일치

Derry City - Bray Wanderers 

다른 파일에 내가이 작업을 수행 할 수있는 방법을

Derry City - Bray 

라고 같은 경기를

? 나는 아이디어가 없다.

+3

진심으로, ** 전혀 ** 아이디어가 없습니까? 심지어 불완전하거나 잘못되었거나 순진한 사람도 있습니까? –

+0

오직 하나의 순진한 아이디어는 검색으로 하나의 파일을 분석하고 서브 루틴을 sed 또는 perl로 대체하는 것입니다. 하지만 모든 새로운 팀마다 수동으로 파일을 수정해야합니다. – emanuele

답변

1

팀 별칭을 대체하는 매우 간단한 스크립트입니다. 당신은 별칭으로 그것을 채울 필요가있을 것이다, 나는 약간을 만들었다. 게임이 여러 개인 경우 해시는 모든 별칭이 전체 이름으로 바뀌는 한 기존 해설을 덮어 씁니다.

#!/usr/bin/perl 
use strict; 
use warnings; 

my %games; 
while (<DATA>) { 
    chomp; 
    my ($home, $guest) = split /\s*-\s*/, $_, 2; 
    $home = get_name($home); 
    $guest = get_name($guest); 
    $games{"$home - $guest"} = 1; 
} 

sub get_name { 
# Return the full name for the team, if it exists, otherwise return the original 
    my %alias = (
     'Derry'  => 'Derry City', 
     'Brawlers' => 'Beijing', 
     'Dolphins' => 'Miami', 
     'Bray'  => 'Bray Wanderers', 
    ); 
    return $alias{$_[0]} // $_[0]; 
} 

use Data::Dumper; 
print Dumper \%games; 

__DATA__ 
Derry City - Bray Wanderers 
Derry City - Bray 
Brawlers - Dolphins 
Beijing - Miami 
Miami - Beijing 
1

C++의 경우 : 사용자가 필요로하는대로 Boost.RegexBoost.Tokenizer을보십시오. 필요한 것은 일치시킬 패턴뿐입니다. 그런

boost::regex("Bray[\s]*(Wanderers)?", boost::regex::icase); 

또는 뭔가 - 쉬운 단위 테스트의 집합으로 설정합니다.