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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сложить 3 подстроки в одну, сложить группы и вернуть одну строку 
:(
    Опции темы
Akella
  Дата 26.12.2011, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



В тексте встречается строка, подобная этой:
Цитата
Общая площадь - 54.3 м.кв. , Жилая площадь - 34 м.кв. , Площадь кухни - 8.3 м.кв.

Цифры, конечно же разные.

Я её вылавливаю выражением:
Код
(?i)Общая площадь - (.*?) м.кв. , Жилая площадь - (.*?) м.кв. , Площадь кухни - (.*?) м.кв.


и получаю три варианта:
54.3
34
8.3

Можно ли как-то одним выражением вернуть сразу все три группы цифр через разделитель.
Чтобы выражение вернуло: 54.3/34/8.3
и не пришлось бы в языке программирования все три группы программно соединять.
PM MAIL   Вверх
alezzz
Дата 26.12.2011, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


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

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



Смотря в каком языке используете регулярные выражения. Но думаю во многих есть режим замены, в Perl это выглядело бы примерно так
Код

s/(?i)Общая площадь - (.*?) м.кв. , Жилая площадь - (.*?) м.кв. , Площадь кухни - (.*?) м.кв./$1\/$2\/$3/


PM MAIL   Вверх
dixoNICH
Дата 26.12.2011, 23:09 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



$, = '/';
$_ = 'Общая площадь - 54.3 м.кв. , Жилая площадь - 34 м.кв. , Площадь кухни - 8.3 м.кв.';
/(?i)Общая площадь - (.*?) м.кв. , Жилая площадь - (.*?) м.кв. , Площадь кухни - (.*?) м.кв./;
print $1,$2,$3;

так? 
$, = '/';
$_ = 'Общая площадь - 54.3 м.кв. , Жилая площадь - 34 м.кв. , Площадь кухни - 8.3 м.кв.';
$p ="$1/$2/$3"while(/(?i)Общая площадь - (.*?) м.кв. , Жилая площадь - (.*?) м.кв. , Площадь кухни - (.*?) м.кв./g);
print $p;

или так?
как?

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


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



alezzz, у тебя в подписи есть сайт http://regexonline.eu.pn/

Зашёл на него, ввёл данные:
http://regexonline.eu.pn/?page=Regexonline...0%BE+23.12.2011

а результата вообще не тот, который хотелось бы
PM MAIL   Вверх
Akella
Дата 27.12.2011, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



скорее всего не получится одним выражением
PM MAIL   Вверх
Pfailed
Дата 27.12.2011, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Или вы умалчиваете реальную задачу или вам нечем заняться.  smile 
Функцию join еще никто не отменял.



--------------------
PM MAIL   Вверх
Akella
Дата 27.12.2011, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Меня интересует именно регулярное выражение, а не написание php или perl кода. Я вообще на другом языке пишу.

Уже есть готовая функция, которая получает на вход текст и регулярное выражение, а возвращает результат (три площади объекта недвижимости).
Я не хочу переделывать функцию, хочу изменить только выражение.
PM MAIL   Вверх
Pfailed
Дата 27.12.2011, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Так не получится. Лучше перепишите функцию.



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


 




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


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

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