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

  • Автор темы Автор темы LightWood
  • Дата начала Дата начала
HTML:
Развернуть Свернуть Копировать
                                                    </td>
                                               
                                                                                                            <td class="has-value">
                                                                                                                            <p class="gray-text">0</p>
                                                                <p class="dark-text">0</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value">
                                                                                                                            <p class="gray-text">0</p>
                                                                <p class="dark-text">0</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop">
                                                                                                                            <p class="gray-text">0</p>
                                                                <p class="dark-text">14 374</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop">
                                                                                                                            <p class="gray-text">14 374</p>
                                                                <p class="dark-text">0</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop table-tablet">
                                                                                                                            <p class="gray-text">0</p>
                                                                <p class="dark-text">73 480</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop table-tablet">
                                                                                                                            <p class="gray-text">73 480</p>
                                                                <p class="dark-text">146 633</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop table-tablet table-mobile">
                                                                                                                            <p class="gray-text">146 633</p>
                                                                <p class="dark-text">234 134</p>
                                                                                                                    </td>
                                                                                                    </tr>
                                                                                            <tr>
                                                    <td>
                                                 
                                                    </td>
                                               
                                                    <td>
                                                 
                                                    </td>
                                               
                                                                                                            <td class="has-value">
                                                                                                                            <p class="gray-text">65</p>
                                                                <p class="dark-text">37</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value">
                                                                                                                            <p class="gray-text">37</p>
                                                                <p class="dark-text">63</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop">
                                                                                                                            <p class="gray-text">63</p>
                                                                <p class="dark-text">64</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop">
                                                                                                                            <p class="gray-text">64</p>
                                                                <p class="dark-text">46</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop table-tablet">
                                                                                                                            <p class="gray-text">46</p>
                                                                <p class="dark-text">53</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop table-tablet">
                                                                                                                            <p class="gray-text">53</p>
                                                                <p class="dark-text">854</p>
                                                                                                                    </td>
                                                                                                            <td class="has-value table-desktop table-tablet table-mobile">
                                                                                                                            <p class="gray-text">854</p>
                                                                <p class="dark-text">1 173</p>
                                                                                                                    </td>
                                                                                                    </tr>
                                                                                            <tr>
                                                    <td>
Не могу "достать" последние числовые значения в каждом "абзаце", именно эти:
234 134 (29 строка)
1 173 (67 строка)
а слабо бысло сразу норм код страницы вставить? типа:
HTML:
Развернуть Свернуть Копировать
<table>
<tr>
    <td class="has-value">
        <p class="gray-text">0</p>
        <p class="dark-text">0</p>
    </td>
    <td class="has-value">
        <p class="gray-text">0</p>
        <p class="dark-text">0</p>
    </td>
    <td class="has-value table-desktop">
        <p class="gray-text">0</p>
        <p class="dark-text">14 374</p>
    </td>
    <td class="has-value table-desktop">
        <p class="gray-text">14 374</p>
        <p class="dark-text">0</p>
    </td>
    <td class="has-value table-desktop table-tablet">
        <p class="gray-text">0</p>
        <p class="dark-text">73 480</p>
    </td>
    <td class="has-value table-desktop table-tablet">
        <p class="gray-text">73 480</p>
        <p class="dark-text">146 633</p>
    </td>
    <td class="has-value table-desktop table-tablet table-mobile">
        <p class="gray-text">146 633</p>
        <p class="dark-text">234 134</p>
    </td>
    </tr>
    <tr>
        <td>

        </td>

        <td>

        </td>

        <td class="has-value">
            <p class="gray-text">65</p>
            <p class="dark-text">37</p>
        </td>
        <td class="has-value">
            <p class="gray-text">37</p>
            <p class="dark-text">63</p>
        </td>
        <td class="has-value table-desktop">
            <p class="gray-text">63</p>
            <p class="dark-text">64</p>
        </td>
        <td class="has-value table-desktop">
            <p class="gray-text">64</p>
            <p class="dark-text">46</p>
        </td>
        <td class="has-value table-desktop table-tablet">
            <p class="gray-text">46</p>
            <p class="dark-text">53</p>
        </td>
        <td class="has-value table-desktop table-tablet">
            <p class="gray-text">53</p>
            <p class="dark-text">854</p>
        </td>
        <td class="has-value table-desktop table-tablet table-mobile">
            <p class="gray-text">854</p>
            <p class="dark-text">1 173</p>
        </td>
    </tr>
</table>
Я б тогда не задрачивался так пытаясь xPath подбрать:
C#:
Развернуть Свернуть Копировать
string xpath1 = "//table//tr/td[last()]/p[last()]";
try {
    // в зено-переменной "HTML" должен быть нужный код страницы либо отрывок кода:
    string HTML = project.Variables["HTML"].Value;
    // либо: string HTML = instance.ActiveTab.DomText;
    var brendspisok  = ZennoPoster.Parser.ParseByXpath(HTML, xpath1, "innerText");
    // вернет результат в виде нескольких строк:
    return string.Join("\r\n", brendspisok);
}
catch(Exception ex) {
    //return ex.Message;
    project.SendInfoToLog(ex.Message, false);
}
Идея взята с этой темы: Кубик парсим страницу в С#
П.С. И это решение для задачи "значение в последнем абзаце последней ячейки каждой строки таблицы". Ибо в примере именно те значения наводились.
 
Последнее редактирование:
  • Спасибо
Реакции: Rogger
а слабо бысло сразу норм код страницы вставить? типа:
HTML:
Развернуть Свернуть Копировать
<table>
<tr>
    <td class="has-value">
        <p class="gray-text">0</p>
        <p class="dark-text">0</p>
    </td>
    <td class="has-value">
        <p class="gray-text">0</p>
        <p class="dark-text">0</p>
    </td>
    <td class="has-value table-desktop">
        <p class="gray-text">0</p>
        <p class="dark-text">14 374</p>
    </td>
    <td class="has-value table-desktop">
        <p class="gray-text">14 374</p>
        <p class="dark-text">0</p>
    </td>
    <td class="has-value table-desktop table-tablet">
        <p class="gray-text">0</p>
        <p class="dark-text">73 480</p>
    </td>
    <td class="has-value table-desktop table-tablet">
        <p class="gray-text">73 480</p>
        <p class="dark-text">146 633</p>
    </td>
    <td class="has-value table-desktop table-tablet table-mobile">
        <p class="gray-text">146 633</p>
        <p class="dark-text">234 134</p>
    </td>
    </tr>
    <tr>
        <td>

        </td>

        <td>

        </td>

        <td class="has-value">
            <p class="gray-text">65</p>
            <p class="dark-text">37</p>
        </td>
        <td class="has-value">
            <p class="gray-text">37</p>
            <p class="dark-text">63</p>
        </td>
        <td class="has-value table-desktop">
            <p class="gray-text">63</p>
            <p class="dark-text">64</p>
        </td>
        <td class="has-value table-desktop">
            <p class="gray-text">64</p>
            <p class="dark-text">46</p>
        </td>
        <td class="has-value table-desktop table-tablet">
            <p class="gray-text">46</p>
            <p class="dark-text">53</p>
        </td>
        <td class="has-value table-desktop table-tablet">
            <p class="gray-text">53</p>
            <p class="dark-text">854</p>
        </td>
        <td class="has-value table-desktop table-tablet table-mobile">
            <p class="gray-text">854</p>
            <p class="dark-text">1 173</p>
        </td>
    </tr>
</table>
Я б тогда не задрачивался так пытаясь xPath подбрать:
C#:
Развернуть Свернуть Копировать
string xpath1 = "//table//tr/td[last()]/p[last()]";
try {
    // в зено-переменной "HTML" должен быть нужный код страницы либо отрывок кода:
    string HTML = project.Variables["HTML"].Value;
    // либо: string HTML = instance.ActiveTab.DomText;
    var brendspisok  = ZennoPoster.Parser.ParseByXpath(HTML, xpath1, "innerText");
    // вернет результат в виде нескольких строк:
    return string.Join("\r\n", brendspisok);
}
catch(Exception ex) {
    //return ex.Message;
    project.SendInfoToLog(ex.Message, false);
}
Идея взята с этой темы: Кубик парсим страницу в С#
П.С. И это решение для задачи "значение в последнем абзаце последней ячейки каждой строки таблицы". Ибо в примере именно те значения наводились.
Спасибо! А можете подсказать в чем заключается ошибка, или в целом мой алгоритм действий неверный.? Кубик переконвертировал в #C.
Ошибка: Компиляция кода Ошибка в действии "CS1022" "Ожидалось определение типа или пространства имен, либо признак конца файла". [Строка: 6; Cтолбец: 1]5555.jpg
 
Ошибка: Компиляция кода Ошибка в действии "CS1022" "Ожидалось определение типа или пространства имен, либо признак конца файла". [Строка: 6; Cтолбец: 1]
Попробуйте:
var brendspisok = ZennoPoster.Parser.ParseByXpath(HTML, xpath1, "innerText").ToList();
 
  • Спасибо
Реакции: Rogger
нет, он там переменную неправильно в код вставил, надо так:
string HTML = project.Variables["Dannie"].Value;
 
  • Спасибо
Реакции: Rogger
Приветствую.

Помогите с регуляркой.
Есть список, который содержит строки вида:

aaaаа aaaa|aaaaaaa|aaaaaa
|aaaaaa|aaaаа аааaaa|aaaaaa
aaaaaa|aaaaa|aaаааа ааааaaa

Нужно взять строку (все строки) начинающуюся со знака |

под а имеется в виду любые буквы русского или латинского алфавита, цифры и другие знаки (кроме спец символов)
 
Приветствую.

Помогите с регуляркой.
Есть список, который содержит строки вида:

aaaаа aaaa|aaaaaaa|aaaaaa
|aaaaaa|aaaаа аааaaa|aaaaaa
aaaaaa|aaaaa|aaаааа ааааaaa

Нужно взять строку (все строки) начинающуюся со знака |

под а имеется в виду любые буквы русского или латинского алфавита, цифры и другие знаки (кроме спец символов)
Как вариант
C#:
Развернуть Свернуть Копировать
^\|.*$

reg.png
 
  • Спасибо
Реакции: Sergodjan
Приветствую.

Помогите с регуляркой.
Есть список, который содержит строки вида:

aaaаа aaaa|aaaaaaa|aaaaaa
|aaaaaa|aaaаа аааaaa|aaaaaa
aaaaaa|aaaaa|aaаааа ааааaaa

Нужно взять строку (все строки) начинающуюся со знака |

под а имеется в виду любые буквы русского или латинского алфавита, цифры и другие знаки (кроме спец символов)
То есть должно в результате взять только одну строку?
|aaaaaa|aaaаа аааaaa|aaaaaa
 
Как вариант
C#:
Развернуть Свернуть Копировать
^\|.*$

ну вот я сам такую регулярку тоже делал... но она не срабатывает в конструктуре рег выражений в Проджект Мейкере... но в Notepad++ срабатывает...

счас попробую в кубике эту регулярку... сработает или нет...
 
. но она не срабатывает в конструктуре рег выражений в Проджект Мейкере.
И не будет там работать в конструкторе.
Знаки ^ и $ не фунциклируют в этом конструкторе.

Тестируйте регулярки в сервисах..
 
  • Спасибо
Реакции: Tronheym
И не будет там работать в конструкторе.
Знаки ^ и $ не фунциклируют в этом конструкторе.

Тестируйте регулярки в сервисах..
всё там функционирут. Просто модификатор m по умолчанию отключен
 
Помогите с регуляркой, есть текст мне нужно из него вытащить последние три слова перед точками и записать в текстовый файл.
Спасибо за помощь!
То есть про сути это несколько предложений и из них нужно вытащить последние три слова перед точкой
 
Помогите с регуляркой, нужно брать диапазон сумм, например:
От 1 до 99 и от 101 до бесконечности.(или все цифры кроме "100")
 
  • Спасибо
Реакции: Kazza
Помогите с регуляркой, нужно брать диапазон сумм, например:
От 1 до 99 и от 101 до бесконечности.(или все цифры кроме "100")
Тут наверное легче через последующую логику отсевать.
После парсинга проверяете через IF кубик, что переменная не содержит 100.
 
Помогите с регуляркой, нужно брать диапазон сумм, например:
От 1 до 99 и от 101 до бесконечности.(или все цифры кроме "100")

Как вариант:
Код:
Развернуть Свернуть Копировать
(?:(?=\b100\b)|\b\d+\b)


65100
 
  • Спасибо
Реакции: inilim
@dizney по более бы узнать об этих квантификаторах ?: ?=
 
Код:
Развернуть Свернуть Копировать
(?:(?=если)то|иначе)

В данном случае, если равно 100, то не выводим ничего, оставляем "то" пустым.
 
  • Спасибо
Реакции: inilim
Привет, подскажите регулярку для очистки html тегов от всех атрибутов.

Например, есть вот такой тест:

<p class="article-render__block article-render__block_unstyled" data-points="5"><span>Шила в мешке не утаишь: объявление вы и сами видите. Вот так вот в открытую предлагают стать "номинальным директором"! Но какие могут последствия для тех, кто согласился? Отвечает юрист. </span></p><p class="article-render__block article-render__block_unstyled" data-points="5"><span>Сначала расскажу, где это объявление висит (это с ума сойти!), а потом перейдем к самому интересному — что конкретно потребовали от меня, когда я позвонил и попросился на "работу".</span></p><h3 class="article-render__block article-render__block_h3" id="mesto" data-points="2"><span>Место</span></h3><p class="article-render__block article-render__block_unstyled" data-points="4"><span>Кажется, что такие вот сообщения можно встретить в злачных местах: промзонах, возможно, пригородах больших городов. Но нет...</span></p>

Нужно так:

<p><span>Шила в мешке не утаишь: объявление вы и сами видите. Вот так вот в открытую предлагают стать "номинальным директором"! Но какие могут последствия для тех, кто согласился? Отвечает юрист. </span></p><p><span>Сначала расскажу, где это объявление висит (это с ума сойти!), а потом перейдем к самому интересному — что конкретно потребовали от меня, когда я позвонил и попросился на "работу".</span></p><h3><span>Место</span></h3><p><span>Кажется, что такие вот сообщения можно встретить в злачных местах: промзонах, возможно, пригородах больших городов. Но нет...</span></p>
 
Последнее редактирование:
  • Спасибо
Реакции: udder и cherus09
  • Спасибо
Реакции: Sergodjan
Пробую такой регуляркой <(?!p|/p|br|/h2|h2|h3|/h3|h4|/h4|h5|/h5|span|/span|i|/i).*?> через замену на пустоту, но что-то не работает.
 
  • Спасибо
Реакции: Sergodjan
Разобрался сам, все работает:D:D
 
  • Спасибо
Реакции: Sergodjan
Подскажите как сделать точный поиск?
Допустим нужно удалить все теги кроме тех которые указаны в регулярке: <(?!p|/p|br|/h2|h2|h3|/h3|h4|/h4|h5|/h5|span|/span|li|ol|/li|/ol|ul|/ul|b|/b|i|/i).*?>
После обработки остаются еще и ненужные теги <blockquote>, <img>.

Пример текста:

HTML:
Развернуть Свернуть Копировать
<span>Начать вести здоровый образ жизни </span><span><b>никогда не поздно</b></span><span>, но нужно сделать первый шаг. Одним из таких начинаний может стать подборка специальных приложений для похудения. Мы разделили их на три основных категории.</span></p><blockquote><span>Также существуют множество трекеров для бега, ходьбы, дыхания и прочего.</span></blockquote><img><h2><span><b> Поддержание водного баланса</b></span><span></span></h2><p><span>Поддерживать водный баланс легче, есть у вас есть индивидуальный помощник. Он поможет не только рассчитать суточную норму воды индивидуально под вас, но и будет постоянно напоминать о том, чтобы вы не забывали выпить порцию воды.</span></p><blockquote><span><b>Залог похудения</b></span><span> - ежедневное употребление чистой питьевой воды (ранее я писала про </span><span></span>водную диету<span>).</span></blockquote><p><span>Большинство современных приложений можно подключить к Apple Watch, чтобы еще быстрее реагировать на уведомления карманного товарища. </span><span><b>Выберите для себя подходящее:</b></span></p><ul><li><span></span>Watermania</li><li><span></span>Waterbalance</li><li><span></span>Hydro</li></ul><h2><span>⏱ </span><span><b>Счетчики калорий</b></span></h2><p><span>Контроль рациона питания неотъемлемая часть похудения. Для этого, необходимо рассчитывать ежедневный расход калорий и отслеживать каждый съеденный кусочек. </span></p><blockquote><span>Суточная норма калорий для женщин: </span><span><b>1700-2200 ккал.</b></span></blockquote><p><span>Взвесите порцию самостоятельно, а подсчет калорий возьмут на себя следующие приложения:</span></p><ol><li><span></span>FatSecret</li><li><span></span>YAZIO</li><li><span></span>Lifesum</li></ol><h2><span><b> Фитнес</b></span><span></span></h2><p><span>Не забывайте о ежедневной зарядке, чтобы мышцы не превратились в кисель. Это не обязательно должны быть двухчасовые занятия в спортзале. Замените любимого тренера на электронного. </span><span><b>Вот несколько достойных кандидатов:</b></span></p><ul><li><span></span>Худеем за 30 дней</li><li><span></span>Seven</li><li><span></span>Sworkit</li></ul><blockquote><span><b>Из личного опыта!</b></span><span> Любое приложение, которое заставит меня встать - уже считается лучшим. Мой выбор пал на первый вариант. </span></blockquote><blockquote><span><b>Когда я полна сил</b></span><span> - выбираю сложную тренировку на все тело. </span><span><b>Проснулась и не довольна жирным пузом</b></span><span> - выбираю занятие на пресс. </span><span><b>Лень что-либо делать</b></span><span> - выбираю разминку или утреннюю зарядку. </span></blockquote><blockquote><span>Для меня было главное не количество сожженных ккал, а сам факт занятия. С каждым разом я приучила себя вставать на коврик, и в скором времени это даже начало приносить удовольствие.</span>
 
Подскажите как сделать точный поиск?
Допустим нужно удалить все теги кроме тех которые указаны в регулярке: <(?!p|/p|br|/h2|h2|h3|/h3|h4|/h4|h5|/h5|span|/span|li|ol|/li|/ol|ul|/ul|b|/b|i|/i).*?>
После обработки остаются еще и ненужные теги <blockquote>, <img>.

Пример текста:

HTML:
Развернуть Свернуть Копировать
<span>Начать вести здоровый образ жизни </span><span><b>никогда не поздно</b></span><span>, но нужно сделать первый шаг. Одним из таких начинаний может стать подборка специальных приложений для похудения. Мы разделили их на три основных категории.</span></p><blockquote><span>Также существуют множество трекеров для бега, ходьбы, дыхания и прочего.</span></blockquote><img><h2><span><b> Поддержание водного баланса</b></span><span></span></h2><p><span>Поддерживать водный баланс легче, есть у вас есть индивидуальный помощник. Он поможет не только рассчитать суточную норму воды индивидуально под вас, но и будет постоянно напоминать о том, чтобы вы не забывали выпить порцию воды.</span></p><blockquote><span><b>Залог похудения</b></span><span> - ежедневное употребление чистой питьевой воды (ранее я писала про </span><span></span>водную диету<span>).</span></blockquote><p><span>Большинство современных приложений можно подключить к Apple Watch, чтобы еще быстрее реагировать на уведомления карманного товарища. </span><span><b>Выберите для себя подходящее:</b></span></p><ul><li><span></span>Watermania</li><li><span></span>Waterbalance</li><li><span></span>Hydro</li></ul><h2><span>⏱ </span><span><b>Счетчики калорий</b></span></h2><p><span>Контроль рациона питания неотъемлемая часть похудения. Для этого, необходимо рассчитывать ежедневный расход калорий и отслеживать каждый съеденный кусочек. </span></p><blockquote><span>Суточная норма калорий для женщин: </span><span><b>1700-2200 ккал.</b></span></blockquote><p><span>Взвесите порцию самостоятельно, а подсчет калорий возьмут на себя следующие приложения:</span></p><ol><li><span></span>FatSecret</li><li><span></span>YAZIO</li><li><span></span>Lifesum</li></ol><h2><span><b> Фитнес</b></span><span></span></h2><p><span>Не забывайте о ежедневной зарядке, чтобы мышцы не превратились в кисель. Это не обязательно должны быть двухчасовые занятия в спортзале. Замените любимого тренера на электронного. </span><span><b>Вот несколько достойных кандидатов:</b></span></p><ul><li><span></span>Худеем за 30 дней</li><li><span></span>Seven</li><li><span></span>Sworkit</li></ul><blockquote><span><b>Из личного опыта!</b></span><span> Любое приложение, которое заставит меня встать - уже считается лучшим. Мой выбор пал на первый вариант. </span></blockquote><blockquote><span><b>Когда я полна сил</b></span><span> - выбираю сложную тренировку на все тело. </span><span><b>Проснулась и не довольна жирным пузом</b></span><span> - выбираю занятие на пресс. </span><span><b>Лень что-либо делать</b></span><span> - выбираю разминку или утреннюю зарядку. </span></blockquote><blockquote><span>Для меня было главное не количество сожженных ккал, а сам факт занятия. С каждым разом я приучила себя вставать на коврик, и в скором времени это даже начало приносить удовольствие.</span>
<(?!p|/p|br|/h2|h2|h3|/h3|h4|/h4|h5|/h5|span|/span|li|ol|/li|/ol|ul|/ul|b|/b|i|/i)\b.*?> попробуй так
 
Подскажите пожалуйста, как спарсить первое число в строке?
2-wterqwre-qwer-8-qwer-2-qwer-qwer-161425
10-wterqwre-qwer-8-qwer-2-qwer-qwer-161425
999-wterqwre-qwer-8-qwer-2-qwer-qwer-161425
Использовал регулярное выражение, но он парсит только 2-3 значные, тоесть 2 он не видит
Код:
Развернуть Свернуть Копировать
\d+.(?=-)
87515
 
Подскажите пожалуйста, как спарсить первое число в строке?
2-wterqwre-qwer-8-qwer-2-qwer-qwer-161425
10-wterqwre-qwer-8-qwer-2-qwer-qwer-161425
999-wterqwre-qwer-8-qwer-2-qwer-qwer-161425
Использовал регулярное выражение, но он парсит только 2-3 значные, тоесть 2 он не видит
Код:
Развернуть Свернуть Копировать
\d+.(?=-)
Посмотреть вложение 87515



C#:
Развернуть Свернуть Копировать
^\d{1}
 
  • Спасибо
Реакции: Min-Z-Drav
что требуется из примера? Напишете пожалуйста еще раз какой должен быть результат
все числа
можно так
C#:
Развернуть Свернуть Копировать
^\d{1,}
 
  • Спасибо
Реакции: Min-Z-Drav
что требуется из примера? Напишете пожалуйста еще раз какой должен быть результат
все числа
можно так
C#:
Развернуть Свернуть Копировать
^\d{1,}
Есть строки

2-wterqwre-qwer-8-qwer-2-qwer-qwer-161425
10-wterqwre-qwer-8-qwer-2-qwer-qwer-161425
999-wterqwre-qwer-8-qwer-2-qwer-qwer-161425

нужно оставить только первые числа, чтобы получился результат

2
10
999
 

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