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

izubr

Client
Регистрация
11.05.2011
Сообщения
520
Благодарностей
219
Баллы
43
Прошу помощи :
Есть строки текста , варианты типа:
1) Alarm to do.
2) <p>stefany very sexy.
3) <p>Exelent programmers here ).
4) <p>10 best programmers here, thanks.

Нужна регулярка для вытаскивания <p> если за ним стоит любая Большая буква или цифра.
То есть на третьем и четвертом предложении регулярка должна выпарсить <p>
, в остальных не сработать.
 

Bot_Sculptor

Client
Регистрация
11.06.2012
Сообщения
787
Благодарностей
237
Баллы
43
  • Спасибо
Реакции: females

vojager

Client
Регистрация
09.09.2010
Сообщения
9
Благодарностей
1
Баллы
3
добрый день. помогите с регуляркой. нужно спарсить текст name_123
Код:
FTP username

name_123


FTP password
пробую регуляркой
Код:
(?<=FTP\ username)[\w\W]*(?=FTP\ password)
, но остаются пробелы и переводы строк. как их убрать?
просьба написать рабочий вариант регулярки, перепробовал разные варианты, ничего не помогает
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
891
Баллы
113
берите той что есть, а потом сделайте строке Trim
 

vojager

Client
Регистрация
09.09.2010
Сообщения
9
Благодарностей
1
Баллы
3
берите той что есть, а потом сделайте строке Trim
это как?
p.s.:я же попросил написать конкретное решение, а не подсказку в каком направлении копать. если Trim может это решить, покажите где и как его использовать
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Операции с текстом - Trim
После того как использовали вашу регулярку
 

vojager

Client
Регистрация
09.09.2010
Сообщения
9
Благодарностей
1
Баллы
3

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
891
Баллы
113
Технически можно и регуляркой, но с тримом надежнее. Поверьте - проект работать будет едва ли дольше, зато достоверность ощутимо повышается
 

Bot_Sculptor

Client
Регистрация
11.06.2012
Сообщения
787
Благодарностей
237
Баллы
43
спасибо, помогло. правда жаль что регуляркой не получается сразу это сделать.
регуляркой получается много чего делать, но иногда есть смысл не использовать (не выдумывать regex), а сделать подручными средствами. И функция trim как раз подходит. Но если вам там важно только regex использовать, то это сойдет:
Код:
(?<=FTP username[\s\r\n]*)[\w]+(?=[\s\r\n]*FTP password)
 
  • Спасибо
Реакции: vojager

Lite

Client
Регистрация
17.10.2013
Сообщения
283
Благодарностей
89
Баллы
28
Имеется строка Filename : new'file7 etc...
как из нее удалить все спецсимволы и пробелы? Т.е. чтобы на выходе остались только буквы-цифры.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Операции с текстом - Замена
И заменить регуляркой (символ1|символ2|символ3) на пустоту
 

LmPopo

Client
Регистрация
06.12.2012
Сообщения
299
Благодарностей
136
Баллы
43
Имеется строка Filename : new'file7 etc...
как из нее удалить все спецсимволы и пробелы? Т.е. чтобы на выходе остались только буквы-цифры.
Замена [^A-z0-9]+ на пустоту
 
  • Спасибо
Реакции: females

aleksei123

Пользователь
Регистрация
15.08.2014
Сообщения
131
Благодарностей
8
Баллы
18
Подскажите пожалуйста символ "Переноса строки", гугл не находит =)
 

Lexicon

Client
Регистрация
27.12.2012
Сообщения
1 775
Благодарностей
891
Баллы
113
\n
 

GHU

Client
Регистрация
31.12.2012
Сообщения
53
Благодарностей
6
Баллы
8
Подскажите пожалуйста как удалить даты из текста. Формат такой 21 сен 2014
Даты абсолютно разные (спаршенные сниппеты ПС хочу очистить)
 

Bot_Sculptor

Client
Регистрация
11.06.2012
Сообщения
787
Благодарностей
237
Баллы
43
Подскажите пожалуйста как удалить даты из текста. Формат такой 21 сен 2014
Даты абсолютно разные (спаршенные сниппеты ПС хочу очистить)
\d{1,2}\s[а-я]{3}\s\d{4}
 
  • Спасибо
Реакции: females и GHU

GHU

Client
Регистрация
31.12.2012
Сообщения
53
Благодарностей
6
Баллы
8

females

Пользователь
Регистрация
19.09.2014
Сообщения
32
Благодарностей
5
Баллы
8
Подскажите пожалуйста, как спарсить все название и описание вот отсюда http://subscribe.ru/catalog/woman/relation

Запарился уже с регуляркой. вот (?<=<h2>([\S\s]*)<a\ href([\s\S]*))[\w\W]*?(?=</p>([\S\s]*)<div\ class="act">)
Что исправить надо?
Чтоб получить все 50 названий и описаний? :be:
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
females, Держи) Добавь в элемент Директива using то что на картинке (using System.Text.RegularExpressions;)


C#:
var html = project.Variables["html"].Value;

var lst = project.Lists["Список"];

string pattern = "(?<=<div\\ class=\"entry\\ fullentry\">)[\\w\\W]*?<div\\ class=\"act\">"; // регулярка для div'a

var matches = Regex.Matches(html,pattern);

foreach (Match match in matches)
           {
               var mar = match.Value;
               string zagolovok = Regex.Match(mar,"(?<=<b>)[\\w\\W]*?(?=</b></a>)").Value;
               string opisanie = Regex.Match(mar,"(?<=<div\\ class=\"content\">)[\\w\\W]*?(?=</div>)").Value.Replace("<p>","").Replace("</p>","");
            
               lst.Add(zagolovok,";",opisanie); // в список кидаем Заголовок;Описание
           }
        
return "Все прошло успешно";
 
Последнее редактирование:
  • Спасибо
Реакции: females

females

Пользователь
Регистрация
19.09.2014
Сообщения
32
Благодарностей
5
Баллы
8
вау!!!! сейчас проверю )))) спс! :-)
 

females

Пользователь
Регистрация
19.09.2014
Сообщения
32
Благодарностей
5
Баллы
8
lst.Add(zagolovok,";",opisanie); // в список кидаем Заголовок;Описание
Это вроде для таблиц )))) я поправил и заработало, но есть один момент:
В source не всегда заголовки лежат между тегами <b>*</b> первые 2 заголовка с тегом <b>

Остальные заголовки не содержат теги,
как поправить этот кусок кода, чтоб он брал все заголовки,
string zagolovok = Regex.Match(mar,"(?<=<b>)[\\w\\W]*?(?=</b></a>)").Value;
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
И вправду. Нижние посты идут с тегами h2. Ну ничего страшного. Двумя регулярками сделаем)
C#:
 string zagolovok = Regex.Match(mar, "(?<=<b>)[\\w\\W]*?(?=</b></a>)").Value;
            if (zagolovok == "")
            {
                var buff = Regex.Match(mar, "(?<=<h2>\\d{1,5})[\\w\\W]*?</h2>").Value;
                zagolovok = Regex.Match(mar, "(?<=[>])[^<>]+(?=[<])").Value.Trim();
            }
 
  • Спасибо
Реакции: alexgrand и females

females

Пользователь
Регистрация
19.09.2014
Сообщения
32
Благодарностей
5
Баллы
8
Там идет по разному

1 вариант : <a href="/catalog/woman.relation.domashniy"><b>Образ Жизни Женщины</b></a>
2 вариант : <a href="/catalog/woman.relation.giznvchudesah">Жизнь полная Чудес</a>

В первых ссылках есть тег <b>, в последущих - нету.

Я думаю, надо регулярку переделать, как-то так,но не знаю как ((((

что-то должно быть эдакое ))))
string zagolovok = Regex.Match(mar,"(?<=<a([\\s\\S])>)[\\w\\W]*?(?=</a>)").Value.Replace("<b>","").Replace("</b>","");
но она не робит :be:
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
Второй код идет для страницы с текстом
Код:
<h2>18.
<a href="/catalog/woman.relation.dream">Как стать мечтой для любимого?</a>

</h2>
 

females

Пользователь
Регистрация
19.09.2014
Сообщения
32
Благодарностей
5
Баллы
8
И вправду. Нижние посты идут с тегами h2. Ну ничего страшного. Двумя регулярками сделаем)
Одновременно опубликовали )))) не заметил ответа....
Сейчас побежал тестить :bi:
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
Все норм должно быть. Мы берем div <div class="entry fullentry"> и в нем уже выполняем манипуляции
 

females

Пользователь
Регистрация
19.09.2014
Сообщения
32
Благодарностей
5
Баллы
8
6.;
О принятии, собственном росте, повышении самооценки

7.;
Жизнь полная Любви создает жизнь полную чудес . Рассказывая о Чудесах сделанных в Любви , мы делаем это от всей души. Делаем с любовью.

8.;
Эта рассылка посвящена всему, что связано с семьей: любовь, ревность, измены, отношения с родственниками и другие проблемы...

9.;
Рассылка открыта для тех, кто мечтает о счастье, Любви, творчестве и богатстве.
Первые пару нормальные, остальные вот такие, без заголовков (((((
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 263
Баллы
113
C#:
.... все как выше в коде
foreach (Match match in matches)
           {
               var mar = match.Value;
             
               string zagolovok = Regex.Match(mar, "(?<=<b>)[\\w\\W]*?(?=</b></a>)").Value;
                if (zagolovok == "")
                {
                    var buff = Regex.Match(mar, "(?<=<h2>\\d{1,5})[\\w\\W]*?</h2>").Value;
                    zagolovok = Regex.Match(buff, "(?<=[>])[^<>]+(?=[<])").Value.Trim();
                }

                string opisanie = Regex.Match(mar,"(?<=<div\\ class=\"content\">)[\\w\\W]*?(?=</div>)").Value.Replace("<p>","").Replace("</p>","");
         
               lst.Add(zagolovok,";",opisanie); // в список кидаем Заголовок;Описание
           }
     
return "Все прошло успешно";
 
  • Спасибо
Реакции: alexgrand

females

Пользователь
Регистрация
19.09.2014
Сообщения
32
Благодарностей
5
Баллы
8
Может что-то не так делаю? :dy:
Не нашел, как вложение сделать - вот тут файл http://file.sampo.ru/tw8kz6/
 

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