Не могу составить регулярку

12
master_jeday
На сайте с 15.05.2010
Offline
231
726

Есть вот такая строка текста:

6 месяцев ... 60 месяцев

Нужно, чтобы на выходе получилось:

6...60

То есть, нужно поудалять все, кроме цифр и трех точек подряд "...". Текст - вообще любой, но везде есть цифры и "...".

В регулярных выражениях не силен, к сожалению. Очень надеюсь на помощь.

Дорвеи на заказ с гарантией трафика ( /ru/forum/993918 ) >>> Осторожно, в телеге/скайпе есть клоны! Проверяйте, что общаетесь именно со мной через личку!
LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#1

$text='6 месяцев ... 60 месяцев';

$text=preg_replace('@([0-9]+) .*?([0-9]+).*@smi',"$1...$2",$text);

echo $text;

---------- Добавлено 27.08.2012 в 23:59 ----------

ну или так:

$text=preg_replace('@([0-9]+).*?\.\.\..*?([0-9]+).*@smi',"$1...$2",$text);

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
master_jeday
На сайте с 15.05.2010
Offline
231
#2
LEOnidUKG:
$text='6 месяцев ... 60 месяцев';
$text=preg_replace('@([0-9]+) .*?([0-9]+).*@smi',"$1...$2",$text);
echo $text;

Спасибо, на php все работает. Десктопный софт, правда, такой синтаксис естественно не понимает. Надо как-то переписать без php-шных функций. То есть что-то типа:

([0-9]+).*?\.\.\..*?([0-9]+)

но не так криво, как у меня. :)

siv1987
На сайте с 02.04.2009
Offline
427
#3

вопросительные знаки попробуйте убрать

master_jeday
На сайте с 15.05.2010
Offline
231
#4

siv1987, то есть так?

([0-9]+).*\.\.\..*([0-9]+)

так тоже не работает. :(

Вообще оно как-то странно реализовано - работает с заменой. Как-то так:

что менять|на что менять

Вот тут есть примеры: http://sbfactory.ru/cd/?p=319

siv1987
На сайте с 02.04.2009
Offline
427
#5

re:regexp|\1...\2

re:regexp|$1...$2

IL
На сайте с 20.04.2007
Offline
435
#6

re:(\d+).*?\.\.\..*?(\d+)|$1...$2

И это... там три точки подряд не могут быть одним символом (многоточие который)?

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
O3
На сайте с 17.11.2008
Offline
127
#7
LEOnidUKG:
$text='6 месяцев ... 60 месяцев';
$text=preg_replace('@([0-9]+) .*?([0-9]+).*@smi',"$1...$2",$text);
echo $text;

---------- Добавлено 27.08.2012 в 23:59 ----------

ну или так:

$text=preg_replace('@([0-9]+).*?\.\.\..*?([0-9]+).*@smi',"$1...$2",$text);

s знаю и i знаю, а m - что такое ?

Пс: квантификатор жадности нужен U

master_jeday
На сайте с 15.05.2010
Offline
231
#8
ivan-lev:
re:([0-9]+).*?\.\.\..*?([0-9]+)|$1...$2

И это... там три точки подряд не могут быть одним символом (многоточие который)?

Не, 3 тчк. Спасибо, сейчас попробую.

И так тоже не работает. Вот тут не может быть ошибки?

|$1...$2
O3
На сайте с 17.11.2008
Offline
127
#9
master_jeday:
Спасибо, на php все работает. Десктопный софт, правда, такой синтаксис естественно не понимает. Надо как-то переписать без php-шных функций. То есть что-то типа:

но не так криво, как у меня. :)

Тяни буст и подключай, там есть регулярка )

master_jeday
На сайте с 15.05.2010
Offline
231
#10
oleg3d:
Тяни буст и подключай, там есть регулярка )

:)

Я, наверное, не мудрствуя лукаво, буду внешним скриптом обрабатывать - раз на php все работает ).

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий