Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите составить регулярное выражение, для C Boost::regex 
V
    Опции темы
DubrovinAV
Дата 4.3.2008, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 20.9.2007

Репутация: нет
Всего: нет



Собственно вот для этого
<namespace:tagname namespace:attr1="value" namespace:atr2="value"...>    

этого
<namespace:tagname namespace:attr1="value" namespace:atr2="value".../>    

и этого
</namespace:tagname>
(^нужно будет выцепить связки namespace:tagname и namespace:attr="value"^)

и вот для этого
<!ENTITY name PUBLIC(или SYSTEM их может и не быть) "entity" NDATA(рег выр-е нужно для          выборки тех сущностей в которых нет NDATA)>
PM MAIL   Вверх
ginnie
Дата 4.3.2008, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



DubrovinAV, можно пример, чтобы было понятнее, что требуется.


--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
DubrovinAV
Дата 4.3.2008, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 20.9.2007

Репутация: нет
Всего: нет



Т.е. 
<[числа, подчеркивание, :, буквы] ' пробел' [числа, подчеркивание, :, буквы(это может встречаться 0 и больше раз)]>


<!ENTITY [числа, буквы, подчеркивание] PUBLIC(или SYSTEM либо пробел) [любые символы] NDATA(может и не быть)>

то что в [ ]-последовательности которые надо описать.

извините за корявость
PM MAIL   Вверх
shamber
Дата 5.3.2008, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



DubrovinAV, приведите пример строки от куда нужно достать данные и покажите что из этой строки вытащить.
PM MAIL Jabber   Вверх
DubrovinAV
Дата 5.3.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 20.9.2007

Репутация: нет
Всего: нет



строка <x:root y:attr="value">
выудить x:root и y:attr="value"

и <!ENTITY PUBLIC "text">
выудить text

PM MAIL   Вверх
KSURi
Дата 5.3.2008, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Для первого случая:
Код

/<([^>]+)>/

И по аналогии, для второго случая:
Код

/"([^"]+)"/


Это сообщение отредактировал(а) KSURi - 6.3.2008, 01:19


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
DubrovinAV
Дата 8.3.2008, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 20.9.2007

Репутация: нет
Всего: нет



неа, не получается.
Надо выудить вначале имя тэга а затем по отдельности атрибуты smile 
PM MAIL   Вверх
ginnie
Дата 9.3.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Код

my ($tag_name, @tag_attributes);
if ($analyzed_text =~ /<([\w\:]+)\s*([\w\:\s\"=]*)>/) {
    $tag_name = $1;
    @tag_attributes = split(/\s+/, $2);
}
my ($entity_name, $entity_value);                     
if ($analyzed_text =~ /<!ENTITY\s*(\w+)\s*(?:PUBLIC|SYSTEM)?\s*(.*?)(?<!NDATA)>/) {
    $entity_name = $1;                                
    $entity_value = $2;                               
}



--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
DubrovinAV
Дата 9.3.2008, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 20.9.2007

Репутация: нет
Всего: нет



ОГРОМНОЕ СПАСИБО smile 
все работает smile 
PM MAIL   Вверх
DubrovinAV
Дата 21.3.2008, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 20.9.2007

Репутация: нет
Всего: нет



Не подскажите регулярку вот для этого, для всей связки целиком

Код

aaa:attr="value"

интересует больше value, в котором могут быть любые символы.

 smile 
PM MAIL   Вверх
ginnie
Дата 21.3.2008, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



Возможно подойдет 

Код

m{\w+:\w+="(.*?)(?<!\\)"}


Усложнил на случай 
Код

aaa:attr="val\"ue"



--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
DubrovinAV
Дата 22.3.2008, 03:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 20.9.2007

Репутация: нет
Всего: нет



Спасибо.
PM MAIL   Вверх
amg
Дата 22.3.2008, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(ginnie @  21.3.2008,  19:32 Найти цитируемый пост)
Усложнил на случай 
ginnie, а если value заканчивается бэкслешем? smile 
PM MAIL   Вверх
ginnie
Дата 22.3.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 6.1.2008
Где: Москва

Репутация: 38
Всего: 49



amg, спасибо за замечание, мозг нагрелся  smile  и выдал вторую версию регулярного выражения

Код

m{\w+:\w+="(.*?[^\\](?:\\\\)*)"}



--------------------
Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг)
PM MAIL Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0668 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.