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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с регуляркой и символом °, Perl 5.8 
V
    Опции темы
tishaishii
Дата 6.3.2009, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


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

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



Пытаюсь найти технические характеристики в строке.

Пишу:
Код
use locale;

my@units=sort{length($b)<=>length $a}(
    'М2', 'М3', 'ММ', 'СМ', 'М', 'ВТ', 'КВТ', 'В', 'А', 'Т', 'Л', 'МЛ', 'КГ', 'КГС', 'УПАКОВОК', 'ОБ', 'ЧАС', 'МИН', 'КВ', '1КВ', '°С', '°C', 'ГРАДУСОВ', '°', 'КГС', 'СМ2'
);

my$units='(?:'.join(' | ', @units).')';
my$str='ТЕРМОМЕТР МАНОМЕТРИЧЕСКИЙ ТБ 0-150° 10КГС/СМ2 АССОРТ. [ 0-150]';
my$len=length $str;

while($str=~m{
        \s+\d+(?:\.\d+)?\s*
        (?:    
            [XХ\-]?\d+(?:\.\d+)?
            (?:
                \s*${units} (?:\s*/\s*${units})*
            )?
        )+\b
    }gcxis) {
        print $&, "\n";
}


Выводит:
Код

 0-150
 10КГС/СМ2
 0-150


Почему-то 0-150° не выводит.
Хотя, если
Код

$s='ТЕРМОМЕТР МАНОМЕТРИЧЕСКИЙ ТБ 0-150°C 10КГС/СМ2 АССОРТ. [ 0-150]';

То всё получется. И на другие единицы измерения реагирует адыкватно.

Как бы эту проблему решить?
PM MAIL ICQ Skype   Вверх
tishaishii
Дата 6.3.2009, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


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

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



Вопрос решён:
Код
        \s+\d+(?:\.\d+)?\s*
        (?:    
            [XХ\-]?\d+(?:\.\d+)?
            (?:
                \s*${units} (?:\s*/\s*${units})*
            )?
        )+


Это сообщение отредактировал(а) tishaishii - 6.3.2009, 15:34
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




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


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

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