Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Регулярные выражения из Perl/PHP в C++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Подскажите книгу по С++ http://www.cyberforum.ru/cpp-beginners/thread617089.html
Подскажите хорошую книгу по теории С++ с примерами (кроме Павловской).))
C++ Разбивка строчного массива Добрый день. Имеется в наличии массив string * arr=new string Внутри него находится следующие символы: 34 61 36 11 17 34 76 99 45 65 72 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 Возможно ли... http://www.cyberforum.ru/cpp-beginners/thread617071.html
Оператор for,if ( найти два наибольших числа) C++
Подскажите пожайлуста....начал самостоятельно изучать С++, в основном по Дейтелу Х.М. но и видеуроки итд... но вот в книге Дейтела есть в конце глав задачки...зациклился на одной не идет и все,,,...
Для заданных чисел вывести «true» или «false» C++
Для заданных чисел вывести «true» или «false» для выполнения следующих условий: а) целые числа m и n имеют одинаковую чѐтность, б) только одно из целых чисел m и n чѐтно.
C++ Сортировка двумерного массива char http://www.cyberforum.ru/cpp-beginners/thread616986.html
Помогите пожалуйста отсортировать двумерный массив(2d) символов(char) по возрастанию.. Пишу программу на с++ в Visual Studio 2005; дело вот в чём - есть двумерный массив символов состоящих из...
C++ Как вычислить значение суммы Для заданого целого числа n вычислить значение суммы подробнее

Показать сообщение отдельно
NeoXidizer
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 4

Регулярные выражения из Perl/PHP в C++ - C++

30.06.2012, 21:40. Просмотров 657. Ответов 1
Метки (Все метки)

Необходимо перенести либо из Perl, либо из PHP (код работает одинаково) функцию с регулярными выражениями на C++.
Perl:
Perl 6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    my $txt = $prefix.shift;
 
    $txt =~ s/\s*;\s*/;\n/g;
    $txt =~ s/^\s*//;
    $txt =~ s/ +/ /g;
    $txt =~ s/: (\d+) (\d+)/sprintf ": %2d %2d", $1, $2/ge;
 
    $txt =~ s/^2:.*\n//gm;
    $txt =~ s/^1:(.+)\n/1:$1\n2:$1\n/gm;
 
    @txt = sort {"$a\n$b" =~ /: *(\d+) .* (\d);\n.*: *(\d+) .* (\d);/ or die;!$3 <=> !$1 or $4 <=> $2 or $a cmp $b; } split /\n/, $txt;
    $txt = join "\n", @txt;
 
    return $txt;
PHP:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        $txt = $this->prefix . $mode;
 
        $txt = preg_replace("/\s*;\s*/", ";\n", $txt);
        $txt = preg_replace("/^\s*/", "", $txt);
        $txt = preg_replace("/ +/", " ", $txt);
        $txt = preg_replace("/: (\d+) (\d+)/e", "sprintf(': %2d %2d', $1, $2)", $txt);
 
        $txt = preg_replace("/^2:.*\n/m", "", $txt);
        $txt = preg_replace("/^1:(.+)\n/m", "1:$1\n2:$1\n", $txt);
 
        $txt = explode("\n", trim($txt));
        usort($txt, function($a, $b) {
                    preg_match("/: *(\d+) .* (\d);\n.*: *(\d+) .* (\d);/", "$a\n$b", $matches) or die('AAA');
 
                    return ($ret = cmp(!$matches[3], !$matches[1])) ?
                            $ret : ( ($ret = cmp($matches[4], $matches[2])) ?
                                    $ret : strcmp($a, $b)
                            );
                }
        );
 
        return join("\n", $txt);
то, что у меня вышло на C++, используя pcrecpp.h
C++
1
2
3
4
5
    string txt = prefix + mode;
 
    pcrecpp::RE("\\s*;\\s*").Replace(";\n", &txt);
    pcrecpp::RE("^\\s*").Replace("", &txt);
    pcrecpp::RE(" +").Replace(" ", &txt);
далее - ступор. Прошу направить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru