Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
30 / 19 / 11
Регистрация: 05.12.2016
Сообщений: 114
.NET 3.x

Регулярное выражение: "вытащить" исходный XML из HTML

26.04.2022, 15:42. Показов 1228. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Коллеги, приветствую!

Появилась тут задачка. Есть html-файл такого плана (упрощенно):
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<html>
<head>
<title>...</title>
</head>
<body>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<!--
    ============= Исходный XML: начало =============
    <tags>
        <tag1>...</tag1>
        <tag2>...</tag2>
        <tag3>...</tag3>
    </tags>
    ============= Исходный XML: конец =============
    -->
</body>
</html>
Из него мне нужно "вытащить" исходный XML, т.е. содержимое между
"============= Исходный XML: начало ============="
и
"============= Исходный XML: конец =============".

Можно, конечно, по старинке, дедовски, поиском и реплейсом, но хочется, всё-таки, нормально. Но вот с регуляркой у меня что-то совсем не задалось...

Помогите, пожалуйста.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.04.2022, 15:42
Ответы с готовыми решениями:

Регулярное выражение чтобы вытащить последнее число
Здравствуйте, у меня есть строка вида: Intel Core i3; 500; Мне нужно с помощью регулярного выражения вытащить от туда только цифру 500,...

Регулярное выражение. Вытащить текст между дивами
&lt;div class=&quot;labeled name&quot;&gt;&lt;a href=&quot;/naumv&quot; onclick=&quot;return nav.go(this, event);&quot;&gt;Владислав Foips&lt;/a&gt;&lt;/div&gt; Как вытащить отсюда...

Регулярное выражение чтобы вытащить курс валют с сайта
Помогите написать регулярное выражение чтобы вытащить курс валют с сайта. https://myfin.by/currency/minsk

6
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
26.04.2022, 16:33
Лучший ответ Сообщение было отмечено Шлфк как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Text.RegularExpressions;
 
class Program
{
    static void Main()
    {
        string input = @"
<html>
<head>
<title>...</title>
</head>
<body>
<div>...</div>
<div>...</div>
<div>...</div>
<div>...</div>
<!--
    ============= Исходный XML: начало =============
    <tags>
        <tag1>...</tag1>
        <tag2>...</tag2>
        <tag3>...</tag3>
    </tags>
    ============= Исходный XML: конец =============
    -->
</body>
</html>";
 
        string s = Regex.Match(input, "(?<=={13} Исходный XML: начало ={13}\r?\n).*(?=\r?\n\\s*={13} Исходный XML: конец ={13})", RegexOptions.Singleline).Value;
        Console.WriteLine(s);
        Console.ReadKey();
    }
}
1
30 / 19 / 11
Регистрация: 05.12.2016
Сообщений: 114
26.04.2022, 16:51  [ТС]
Спасибо!
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
26.04.2022, 16:53
Шлфк, если таких значений несколько в файле, то лучше использовать ленивый квантификатор, иначе подтянет лишние данные.

C#
30
string s = Regex.Match(input, "(?<=={13} Исходный XML: начало ={13}\r?\n).*?(?=\r?\n\\s*={13} Исходный XML: конец ={13})", RegexOptions.Singleline).Value;
1
30 / 19 / 11
Регистрация: 05.12.2016
Сообщений: 114
27.04.2022, 08:12  [ТС]
Значение одно, но на будущее пригодится. Еще раз большое спасибо!
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18302 / 14226 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
27.04.2022, 09:13
Шлфк, возможно лучше привязываться к названию корневого тега XML. Особенно если оно не совпадает с html тегами.
1
30 / 19 / 11
Регистрация: 05.12.2016
Сообщений: 114
27.04.2022, 09:15  [ТС]
К сожалению, корневой тег может меняться, по этому не получится. Постоянны только "заголовки комментария":
"============= Исходный XML: начало =============" и "============= Исходный XML: конец =============".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.04.2022, 09:15
Помогаю со студенческими работами здесь

Регулярное выражение: как вытащить n из row[n], где n-целое число
Здравствуйте, как вытащить n из row, где n-целое число

Xml и регулярное выражение
Суть такая поместил я в xml регулярное выражение и получилось &lt;Func&gt;(?&lt;=&lt;span class=blue&gt;)(.*)(?=&lt;/span&gt;)&lt;/Func&gt; И ошибка...

Регулярное выражение для xml
Регулятор выражение xml Тема пойдет о регуляторе выражения без парсинга, причина почему парсинг не нужен из за того что парсинг...

Регулярное выражение. Разбить XML документ
Есть xml документ. в стринг переменной. item'ov может быть очень много. &lt;?xml version=&quot;1.0&quot;...

HTML 5, Регулярное выражение
Здравствуйте, подскажите, как в должно выглядеть регулярное выражение в свойстве pattern=&quot;&quot;, определяющее следующий шаблон:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru