Регулярные выражения - чистка мусора

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Помогите отчистить контент от мусора, от не нужных тегов в тексте.

Имею вот что:
Код:
//    -------------------------------------------------------------  //
//    Получаем content статьи;
//    -------------------------------------------------------------  //
   
//    Шаблон регулярного выражения;   
    pattern = @"(?<=<div\ id=""contentleft"">)[\w\W]*?(?=</div>)";
    rgx = new Regex(pattern);
   
//    Контент статьи;
    var content = rgx.Match(article, 0);
   
//    Чистим от мусора;
    content = ..... (удалить теги h1)
    content = ..... (удлаить теги ..)
    content = ..... (удлаить теги ..)
Есть переменная
PHP:
content
в которой находится мой контент, и мне надо убрать множественные конструкции которые мне просто не нужны.

Подскажите наиболее подходящий способ придать множественной обработке с помощью Replace либо как то еще???
 
Последнее редактирование:

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
все теги можно убрать с помощю <[^>]+>
 

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
все теги можно убрать с помощю <[^>]+>
Мне не надо все удалять, мне надо сохранить все параграфы, фото и тд.
Мне надо избавиться от определенных тегов.

Как мне применить Replace множественный, просто я плохо язык знаю, и не знаю как граммотно к переменной content сделать множественные Replace
 

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Мне надо чтобы в переменную content шла перезапись множественная, ниужели мне надо создать множество экземпляров класса Regex??
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
content = Regex.Replace(content, "<[^>]+>", ""); исправил
экземпляры Regex создаются только в случае множественного обращения к ним, в вашем случае это делать не нужно.
var content = rgx.Match(article, 0); - неправильно
var content = rgx.Match(article).Value; - правильно
 
Последнее редактирование:

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
content = Regex.Replace(content, "<[^>]+>");
экземпляры Regex создаются только в случае множественного обращения к ним, в вашем случае это делать не нужно.
var content = rgx.Match(article, 0); - неправильно
var content = rgx.Match(article).Value; - правильно

Код:
content = Regex.Replace(content, "h1", string.Empty);
А мне выдает:

Код:
Тип    Время    Сообщение
    21:13:11    Компиляция кода  Ошибка в действии "CS1502" "Наиболее подходящий перегруженный метод для "System.Text.RegularExpressions.Regex.Replace(string, string, string)" имеет несколько недопустимых аргументов". [Строка: 63; Cтолбец: 12]
Код:
Тип    Время    Сообщение
    21:13:11    Компиляция кода  Ошибка в действии "CS1503" "Аргумент "1": преобразование типа из "System.Text.RegularExpressions.Match" в "string" невозможно". [Строка: 63; Cтолбец: 26]
 

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
А почему так не правильно??
Код:
var content = rgx.Match(article, 0);
Я просто работаю по подсказкам в коде и мне выдает что есть такой вариант:
Код:
Match Regex.Match (string input, int startat)
Я так понял что startat это номер совпадения.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
делайте как хотите, лишь бы у вас оно работало )
почему бы я так не делал: если совпадений не будет то вызовется исключение. так что учтите этою. хотя нет, не вызывает )
 
Последнее редактирование:

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Если бы у меня все работало, писал бы я сюда.

Код:
//    -------------------------------------------------------------  //
//    Получаем content статьи;
//    -------------------------------------------------------------  //
   
//    Шаблон регулярного выражения;   
    pattern = @"(?<=<div\ id=""contentleft"">)[\w\W]*?(?=</div>)";
    rgx = new Regex(pattern);
   
//    Контент статьи;
    var content = rgx.Match(article).Value;
   
//    Чистим от мусора;
    content = Regex.Replace(content, @"<h1>", string.Empty);
Все отрабатывает но h1 не удаляет.
 

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Все работает, это я просто торможу.
 

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Вот только я не понимаю зачем нужно объявлять вот такую конструкцию, если и без нее все работает на ура.

Код:
var rnd_new = new Regex();
Код:
Без объявления все работает??????
var content = Regex.Match(...);
var content = Regex.Replace(....);
 
Последнее редактирование:

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Я прочитал что объявлять нужно только те классы в которых статические методы а не обычные.
А сдесь видно в using прописан класс Text.RegularExpressions.
Потому наверное и не надо объявлять их черех new.

Кто в курсе, просветите если можете.
 

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Вот так у меня все прекрасно работает:

Код:
//    -------------------------------------------------------------  //
//    Title статьи;
//    -------------------------------------------------------------  //
       
    var pattern = @"(?<=rel=""bookmark"">).*?(?=</a></h1>)";
    var title = Regex.Match(article, pattern).Value;
   
   
//    -------------------------------------------------------------  //
//    Content статьи;
//    -------------------------------------------------------------  //
   
    pattern = @"(?<=<div\ id=""contentleft"">)[\w\W]*?(?=</div>)";
    var content = Regex.Match(article, pattern).Value;
    return content;
 

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