распознавание образов и сопоставление строк - PullRequest
0 голосов
/ 30 сентября 2011

У меня есть два файла, взятые с двух разных серверов. В этих двух файлах представлены матчи некоторых футбольных команд. Как известно, футбольные команды можно называть разными именами. Я хотел бы реализовать код, который может распознать одно и то же футбольное совпадение в двух файлах, чтобы взять те же переменные из файла и некоторые другие из другого файла. например, в одном файле у меня есть совпадение под названием

Derry City - Bray Wanderers

и в другом файле у меня такое же совпадение, которое называется

Derry City - Bray 

как я могу это сделать? у меня нет идей.

Ответы [ 2 ]

1 голос
/ 30 сентября 2011

Очень простой скрипт для замены псевдонимов для команд.Тебе нужно будет заполнить его псевдонимами самостоятельно, я их придумала.Если у вас есть несколько игр, хеш будет перезаписывать существующие, если все псевдонимы заменены на полные имена.

#!/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 голос
/ 30 сентября 2011

В c ++: посмотрите на Boost.Regex и Boost.Tokenizer , так как они будут делать то, что вам нужно.Все, что вам нужно, это шаблон для сопоставления.

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

Или что-то в этом роде - его легко настроить как набор юнит-тестов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...