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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
NeoXidizer
0 / 0 / 0
Регистрация: 22.06.2012
Сообщений: 4
#1

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

30.06.2012, 21:40. Просмотров 670. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2012, 21:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Регулярные выражения из Perl/PHP в C++ (C++):

Регулярные выражения - C++
Здравствуйте, Надо заменить в тексте номер телефона формата (012) 345-67-89 на +380 12 345 67 89. Помогите, пожалуйста, как должны...

Регулярные выражения в с++ - C++
Рылся рылся, нигде не нашел... Кто нибудь, объясните: 1) как установить эту библиотеку Regex. 2) Как заставить её работать. 3) И...

Регулярные выражения - C++
Привет помогите составить регулярное выражение, чтобы парсить такую строку: , , результатом должно быть: a hello world any ...

Регулярные выражения. - C++
Здравствуйте всем! Имеется массив строк. Надо написать программу с функцией реализующей выявления соответствия между шаблоном допустим...

Регулярные выражения - C++
Как записать строки у тегов &lt;c&gt;&lt;/c&gt; и &lt;v&gt;&lt;/v&gt;? &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt; &lt;worksheet...

Регулярные выражения с++ - C++
Пользователь должен ввести строки: фамилию(первая буква должна быть заглавной), дату рождения(по форме аа.аа.аааа), состояние здоровья(good...

1
MrGluck
Модератор
Эксперт CЭксперт С++
7490 / 4605 / 691
Регистрация: 29.11.2010
Сообщений: 12,589
30.06.2012, 22:25 #2
http://www.boost.org/doc/libs/1_50_0/libs/regex/doc/html/index.html
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2012, 22:25
Привет! Вот еще темы с ответами:

Регулярные выражения - C++
Доброй ночи! Использую вот такой код void INITDIALOG(void* p){ char* bufer = new char; server.GetLocList(bufer); char * t =...

Регулярные выражения - C++
Можете подсказать что это значит? &quot;Max-Forwards*(\d{3,}|7)&quot; я без понятия что это и откуда это( Добавлено через 4 минуты я уже...

Регулярные выражения в g++ - C++
Привет всем! этот пример взял из http://www.cplusplus.com/reference/regex/regex_search/ и скомпилировал g++ . #include &lt;iostream&gt; ...

Регулярные выражения - C++
Ребят, у меня тут проблемы. В файле input.txt есть строчки, в которых нужно найти вес, т.е., например, 221 kg, 45g и отправить их в аутпут....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru