Бесплатно напишу регулярное выражение. Часть 2.

starley

Client
Регистрация
08.03.2015
Сообщения
89
Благодарностей
20
Баллы
8
Подскажите пожалуйста регулярку чтобы обрезала предложения до трех слов.
тоже мучаюсь с похожей задачей: чтобы ещё можно было задавать диапазон - обрезать строки рандомно, к примеру, оставлять от 3 до 5 слов в строке. Как определить количество слов в строке нашел на форуме, а вот как обрезать и оставить заданное количество - не знаю.
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
C#:
var str = "Подскажите пожалуйста регулярку чтобы обрезала предложения до трех слов.";
            
             Random rnd = new Random();
             var count = rnd.Next(1, str.Split(' ').Count());
             var words = str.Split(' ').Take(count);
             string rezultString = string.Join(" ", words.ToArray());
 
  • Спасибо
Реакции: Wide

Wide

Client
Регистрация
04.02.2013
Сообщения
946
Благодарностей
258
Баллы
63
C#:
var str = "Подскажите пожалуйста регулярку чтобы обрезала предложения до трех слов.";
          
             Random rnd = new Random();
             var count = rnd.Next(1, str.Split(' ').Count());
             var words = str.Split(' ').Take(count);
             string rezultString = string.Join(" ", words.ToArray());
имхо. было бы логичнее заставить код работать с переменными. ну а так, как всегда красава. забираю в копилку)

2015-04-04_125431.jpg
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 375
Благодарностей
2 041
Баллы
113
имхо. было бы логичнее заставить код работать с переменными. ну а так, как всегда красава. забираю в копилку)
я не кодер но вроде работает))
Код:
var str = project.Variables["str"].Value;

             Random rnd = new Random(1);
             var count = rnd.Next(int.Parse(project.Variables["q"].Value), str.Split(' ').Count());
             var words = str.Split(' ').Take(count);
             string rezultString = string.Join(" ", words.ToArray());
            return rezultString;
;
если предложение состоит меньше заданного числа то выходит по красной
q - это ваше заданное число которое прибавляется к +1, так же можно поставить кубик рандом для q

если что то ни так сильно не пинайте)))))
 
  • Спасибо
Реакции: sentinel, SilverSun и Wide

Wide

Client
Регистрация
04.02.2013
Сообщения
946
Благодарностей
258
Баллы
63

barkasian

Client
Регистрация
03.12.2014
Сообщения
127
Благодарностей
137
Баллы
43
Приветствую!
Нуждаюсь в Вашей помощи.
Возникли сложности со взятием тайтла и сниппета с поисковика GoGo.
Суть проблему в огромном количестве пробелов, переводах строки и ненужной шелухи при использовании регулярного выражения.
Помогите подкорректировать регулярку. Проект приложен.
 

Вложения

sof

Client
Регистрация
15.04.2013
Сообщения
831
Благодарностей
185
Баллы
43
Друзья, нужна ваша помощь в составлении регулярного выражения. Нужно вытянуть тел.номера (телефонов может быть от 1 до 4)
Пример:
<strong class="fnormal xx-large"><span class="block">8 (099) 459 80 60</span> <span class="block">093 727 72 62</span> </strong>

Нужно чтобы было
8 (099) 459 80 60; 093 727 72 62
 

LmPopo

Client
Регистрация
06.12.2012
Сообщения
299
Благодарностей
136
Баллы
43
(?<=>)\d[\d\ ()]+\d(?=<)
 

sof

Client
Регистрация
15.04.2013
Сообщения
831
Благодарностей
185
Баллы
43

LmPopo

Client
Регистрация
06.12.2012
Сообщения
299
Благодарностей
136
Баллы
43
ну-ну )
дан был конкретный пример, на его основе написана рабочая регулярка. Чтоб собрать все совпадения - нужно использовать список.
 

Wide

Client
Регистрация
04.02.2013
Сообщения
946
Благодарностей
258
Баллы
63
Аффтар, где ты?) народ помогите пжл распарсить такие ссылки на категории: http://poddomen.site.ru/rubrica1/rubrica2/ http://site.ru/rubrica1/rubrica2/rubrica3/
т.е. должно быть так поддомен и/или домен плюс уровень категории. пример: http://poddomen.site.ru/rubrica1/ http://poddomen.site.ru/rubrica1/rubrica2/ http://site.ru/rubrica1/ http://site.ru/rubrica1/rubrica2/ http://site.ru/rubrica1/rubrica2/rubrica3/
 

Wide

Client
Регистрация
04.02.2013
Сообщения
946
Благодарностей
258
Баллы
63
Парни, актуально очень))
 

Bot_Sculptor

Client
Регистрация
11.06.2012
Сообщения
787
Благодарностей
239
Баллы
43
Аффтар, где ты?) народ помогите пжл распарсить такие ссылки на категории: http://poddomen.site.ru/rubrica1/rubrica2/ http://site.ru/rubrica1/rubrica2/rubrica3/
т.е. должно быть так поддомен и/или домен плюс уровень категории. пример: http://poddomen.site.ru/rubrica1/ http://poddomen.site.ru/rubrica1/rubrica2/ http://site.ru/rubrica1/ http://site.ru/rubrica1/rubrica2/ http://site.ru/rubrica1/rubrica2/rubrica3/
ниче не понял, но уже отпишу , раз тут

Код:
https?://.+?/(.+?/){2}
{2} сколько категорий брать
{2,5} диапазон
{2,} >=2
 
Последнее редактирование:
  • Спасибо
Реакции: Wide

Wide

Client
Регистрация
04.02.2013
Сообщения
946
Благодарностей
258
Баллы
63
ниче не понял, но уже отпишу , раз тут

Код:
https?://.+?/(.+?/){2}
{2} сколько категорий брать
{2,5} диапазон
{2,} >2
ого работает) нужно будет подстановой в скобках поиграться. а универсальной нету? типа чтоб разбила на все категории?
 

Bot_Sculptor

Client
Регистрация
11.06.2012
Сообщения
787
Благодарностей
239
Баллы
43
ого работает) нужно будет подстановой в скобках поиграться. а универсальной нету? типа чтоб разбила на все категории?
увы, я тебя не понимать)
покажи точный исходный текст, дальше покажи что с него ты хочешь получить, в точном виде. тогда станет ясно
 

Wide

Client
Регистрация
04.02.2013
Сообщения
946
Благодарностей
258
Баллы
63
увы, я тебя не понимать)
покажи точный исходный текст, дальше покажи что с него ты хочешь получить, в точном виде. тогда станет ясно
всё спасибо мил-человек) распарсил подстановкой значения в скобках {}
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Помогите плиз с регуляркой!
Задача: собрать все теги img со страницы, исключив те теги, которые в ссылке содержат слова logo и avatar.
Вот примеры ссылок:
Код:
<img src="http://cdn1.img22.domen.ru/i/company_logo.png" alt="">
<img width="16" height="16" src="http://cdn1.img22.domen.ru/i/default-avatar-20x20.jpg" class="avatar">
Пишу что-то вроде этого:
Код:
<img\ .*?domen\.ru.*?(?!logo|avatar).*?>
<img\ .*?domen\.ru.*?((?!logo|avatar).)*?>
но эти конструкции все-равно парсят все теги со стоп-словами :(
Как сделать правильно?

P.S. Ссылки абсолютно разные везде, их объединяет только корневой домен и + могут быть еще другие стоп слова.
 

LmPopo

Client
Регистрация
06.12.2012
Сообщения
299
Благодарностей
136
Баллы
43
Вроде этого -
Код:
<img[^<>]*?https?://((?!logo|avatar|<|>).)+?["'][^<>]*?>
 
  • Спасибо
Реакции: Severip

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Спасибо за помощь!
Только осталось одно но - domen.ru тоже должен присутствовать, т.к. без него собирает счетчики и прочий мусор.
Куда вставить domen.ru, чтобы он тоже присутствовал?
У меня не получается с доменом :(
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
А-а-а поковырял твой вариант, получилось!
LmPopo, спасибо!!!!!!
Вот итог:
Код:
<img[^<>]*?https?://[^<>]*?domen\.ru[^<>]((?!logo|avatar|<|>).)+?["'][^<>]*?>
Может пригодится кому... парсит картинки в статье.
 

LmPopo

Client
Регистрация
06.12.2012
Сообщения
299
Благодарностей
136
Баллы
43
верно, но можно конкретно написать слеш вместо "[^<>]" :-)
+ добавил отсутствие пробелов в ссылке
Код:
<img[^<>]*?https?://[^<>]*?domen\.ru/((?!logo|avatar|<|>|\s).)+?["'][^<>]*?>
 
  • Спасибо
Реакции: Severip

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
О, да! Работает! Спасибо! :-)
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Еще вопрос по регуляркам. Есть список дат в файле:

20150505-наборсимволов::наборсимволов
20150504-наборсимволов::наборсимволов
20150503-наборсимволов::наборсимволов
20150502-наборсимволов::наборсимволов
20150501-наборсимволов::наборсимволов
20150430-наборсимволов::наборсимволов
20150429-наборсимволов::наборсимволов

Есть экшен Удалить строки в списке соответствующие регулярному выражению.
Задача: нужна регулярка, которая удалит все строки "младше" текущей даты 20150505 на 3 дня.
Подскажите плиз, как сделать?
 

LmPopo

Client
Регистрация
06.12.2012
Сообщения
299
Благодарностей
136
Баллы
43
Сначала нужно получить эти три дня, напр. с помощью c# экшна.
Затем удалить строки, не удовлетворяющие регулярке: ^20150505|^20150504|^20150503
 
  • Спасибо
Реакции: Severip

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
LmPopo, спасибо тебе большое! Снова выручил.
Сделал снипет на c#, он конечно страшный, но как умею...
Код:
var date = DateTime.Now.ToString("yyyyMMdd");
var date1 = DateTime.Now.AddDays(-1).ToString("yyyyMMdd");
var date2 = DateTime.Now.AddDays(-2).ToString("yyyyMMdd");
var date3 = DateTime.Now.AddDays(-3).ToString("yyyyMMdd");
string result = "^" + date + "|^" + date1 + "|^" + date2 + "|^" + date3;
return result;
Может пригодится кому...
Хотя кто умеет, в две строки все напишет.
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Покопался на форуме, но не нашел решения. Как получить регуляркой домен из ссылок вида:
www.cdn1.img22.domen.ru
img22.domen.com
в виде:
domen.ru или domen.com, т.е. чтобы сохранялся только чистый домен?
Варианты со списком всех доменных зон не нужны, т.к. никаких экзотических доменов не будет.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
а вам это надо после навигейта на сайт или до?
 

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
До перехода на сайт, оно будет в другую регулярку подставляться.
 

LmPopo

Client
Регистрация
06.12.2012
Сообщения
299
Благодарностей
136
Баллы
43

Severip

Client
Регистрация
17.10.2013
Сообщения
346
Благодарностей
98
Баллы
28
Респект, LmPopo! :dh:
:dk:
 

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)