Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Требуется помощь (Регулярные выражения) (https://forum.antichat.xyz/showthread.php?t=61537)

SSB1981 11.02.2008 18:37

Требуется помощь (Регулярные выражения)
 
Здравствуйте!
Т.К в регулярных выражения я не очень, то прошу вашей помощи.
Есть вот такая строка:
1042355456 1042355711 Ru Вологда Вологодская область Северо-Западный
цифры - дапазон Ip
потом Id страны
потом город (Вологда)
далее область
и последнее регион

Мне необходимо заключить все эти данные в кавычки и разделить запятой.
Кто поможет/напишет?
Спасибо!
P.S. таких сторок просто 66 000

bul.666 11.02.2008 18:44

Приведи штук пять строк для проверки

Kaimi 11.02.2008 18:51

А нафига регулярку писать?
Замени пробелы на
Код:

","
В начало строки " и замени
Код:

\n
на "

bul.666 11.02.2008 18:55

Вологодская область
Тут пробел =\

Isis 11.02.2008 18:56

Цитата:

Сообщение от ssb1981
не так не пойдёт.

Сам и делай

SSB1981 11.02.2008 19:08

Isis это не туда у меня интернет медленный поэтому ответ поздно приходит
строки
1348299520 1348300543 RU Москва Москва Центральный
1348317184 1348321279 RU Санкт-Петербург Санкт-Петербург Северо-Западный
1357710176 1357710207 RU Мурманск Мурманская область Северо-Западный
1357710280 1357710287 RU Москва Москва Центральный
1357710288 1357710295 RU Подольск Московская область Центральный

cylaaaan 11.02.2008 19:35

может быть нужно из файла каждую стоку обратить в массив
например сделать ей вид:

$a[0] = "1348299520 1348300543 RU Москва Москва Центральный";
$a[1] = "...";
$a[2] = "...";

и так далее....

а потом юзать к каждой строке preg_match_all, а потом выводить на экран, через for естевственно

demonoid 11.02.2008 20:13

Цитата:

Сообщение от SSB1981
Здравствуйте!
Т.К в регулярных выражения я не очень, то прошу вашей помощи.

Код:

#!perl -w
use strict;
my $f = shift||exit print "\x09usage $0 <file>";
open my $FILE,$f or die $!;
foreach my $text (<$FILE>)
{
  printcyr("'$1','$2','$3','$4','$5','$6'\n") if $text=~/(\d+) (\d+) ([A-Z]{2}) (.+?) (.+) (.+)/;
}
close $FILE;
sub printcyr
{

        my $text = shift;
        $text =~ y/А-яЁё/\x80-\xaf\xe0-\xf1/;
        print $text;
}

Код:

C:\>p.pl  id.txt
'1348299520','1348300543','RU','Москва','Москва','Центральный'
'1348317184','1348321279','RU','Санкт-Петербург','Санкт-Петербург','Северо-Западный'
'1357710176','1357710207','RU','Мурманск','Мурманская область','Северо-Западный'
'1357710280','1357710287','RU','Москва','Москва','Центральный'
'1357710288','1357710295','RU','Подольск','Московская область','Центральный'


Joker-jar 11.02.2008 20:23

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

t0tal 12.02.2008 03:14

Пользуйся экселем как разделитель выбери пробел и подставляй куда надо столбики с запятыми или кавычками, что там надо то и вставляй.


Время: 02:37