С Новым годом! Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 36

Вывести результат парсинга

20.01.2015, 15:23. Показов 1372. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Вот у меня есть строка
XML
1
<![CDATA[Бла бла бла бла]]>
И есть регулярка
XML
1
\[CDATA\[(.*?)\]
Эта регулярка ищет все, кроме <![CDATA[ и тому подобной ереси, то есть она должна найти только текст "Бла бла бла бла" . В итоге вопрос, как мне вывести найденный текст?. Мне просто надо почистить строки, от этих левых записей.
Заранее спасибо)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.01.2015, 15:23
Ответы с готовыми решениями:

Результат парсинга представлен в неверной кодировке
Делаю парсинг. В переменную сохраняю то, что спарсил(cохраняю в UTF8). Потом из переменной вывожу результат парсинга в Label1.Text ...

Вывести результат парсинга из трех массивов построчно
парсю библиотекой simple_html_dom.php в три разных массива foreach($html-&gt;find('.comments-author') as $names) { ...

Spirit qi. записать результат парсинга с пробелами
Привет всем ! при использование парсинга spirit::qi возникнул такой вопрос ... при вызове функции qi::phrase я передаю параметр...

24
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
20.01.2015, 16:11
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Например, так

VB.NET
1
2
3
        Dim Str As String = "<![CDATA[Бла бла бла бла]]>      <![CDATA[ash ash ash ash]]>"
        Dim Group1 As String() = (From M As Match In Regex.Matches(Str, "\[CDATA\[(.*?)\]") Select M.Groups(1).Value).ToArray()
        MsgBox(String.Join(vbCrLf, Group1.ToArray))
Добавлено через 9 минут
Или так, что то же самое, но выглядит упрощенно
VB.NET
1
2
3
4
5
        Dim Str As String = "<![CDATA[Бла бла бла бла]]>      <![CDATA[ash ash ash ash]]>"
        Dim allIp As MatchCollection = Regex.Matches(Str, "\[CDATA\[(.*?)\]")
        For Each S As Match In allIp
            MsgBox(S.Groups(1).Value)
        Next
Так просматривается каждый элемент. Вы можете собирать их в строку или листбокс, как больше по душе
1
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 36
20.01.2015, 16:50  [ТС]
А если у меня массив и в каждой ячейке лежит <![CDATA[Бла бла бла бла]]> . То есть не несколько таких, а только одна CDATA запись, этот код будет валидным?
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
20.01.2015, 16:54
Разумеется. Я привел пример сразу усложненным
0
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 36
20.01.2015, 17:50  [ТС]
Памирыч,
VB.NET
1
2
3
4
5
Dim Str As String = Mass(i)
        Dim allIp As MatchCollection = Regex.Matches(Str, "\[CDATA\[(.*?)\]")
        For Each S As Match In allIp
            MsgBox(S.Groups(1).Value)
        Next
Вот так вот, почему-то не работает. Это я все пихаю в цикл. вместо msgbox мне нужно присвоить отпаршенную строку в ListBox1.Items(i) . Но не в этом суть, оно даже не выводит в msgbox
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
20.01.2015, 17:56
BigProfessor, так-то все вроде верно.
Что у Вас в Mass?

Использование цикла жизненно необходимо?

Не проще ли распарсить сразу весь массив Mass?

Вот весь код:

VB.NET
1
2
3
        Dim Str As String = String.Join(vbCrLf, Mass)
        Dim Group1 As String() = (From M As Match In Regex.Matches(Str, "\[CDATA\[(.*?)\]") Select M.Groups(1).Value).ToArray()
        ListBox1.Items.AddRange(Group1.ToArray)
0
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 36
20.01.2015, 18:02  [ТС]
В mass 134 строки, каждая из которых содержит
<![CDATA[Бла бла бла бла]]>
...
<![CDATA[Бла бла бла бла133]]>
По логике должно работать.)
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
20.01.2015, 18:04
С кодировкой все нормально?
Выведите-ка в MsgBox один из элементов этого "Массива" (подсмотрите), все ли там нормально
0
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 36
20.01.2015, 18:07  [ТС]
Цитата Сообщение от Памирыч Посмотреть сообщение
Использование цикла жизненно необходимо?
Не проще ли распарсить сразу весь массив Mass?
Цикл - да.) Там вначале действия происходят определенные, и при условии нужно будет заменить старое значения итема на новое в листбоксе
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
20.01.2015, 18:10
Ясно.
Ну разбирайтесь с этим самым массивом. Мы его не видим, поэтому задача ложится исключительно на Ваши плечи
0
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 36
20.01.2015, 18:51  [ТС]
Такс.. В MsgBox наконецто смог вывести - все гуд.
Но если заменить MsgBox(S.Groups(1).Value) На ListBox1.Items(i) = S.Groups(1).Value . Че то вообще никак
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
20.01.2015, 19:02
Цитата Сообщение от BigProfessor Посмотреть сообщение
На ListBox1.Items(i) = S.Groups(1).Value
Не так
VB.NET
1
ListBox1.Items.Add(S.Groups(1).Value)
0
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 36
20.01.2015, 19:07  [ТС]
Памирыч, А если мне надо заменить уже существующий?
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
20.01.2015, 19:10
А, ну тогда верно, как Вы и написали.
Цитата Сообщение от BigProfessor Посмотреть сообщение
Че то вообще никак
Что именно происходит? Ошибка? Какая?
Строка в листбоксе под номером i точно существует?
0
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 36
20.01.2015, 19:21  [ТС]
Ошибки нету. Просто не заменяет. Да существует. У меня же и идет работа с этими строками. Я еще что бы точно убедиться сделал msgbox прямо над кодом замены, в итоге msgbox пашет, а замена нет

Добавлено через 3 минуты
VB.NET
1
For l = 0 To ListBox1.Items.Count - 1 Step 1
Может цикл неправильно задаю? я просто пока тестю с одним элементов в ListBox
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
20.01.2015, 19:23
Все это весьма странно.
Приведите весь код цикла и сделайте фотографии участка кода и самой формы.

И еще - какая у Вас версия студии?
0
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 36
20.01.2015, 19:41  [ТС]
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
For i = 0 To (XmlNodeList.Count - 1) Step 1
            MassLinkSerial(i) = XmlNodeListLink.Item(i).InnerXml
            MassNameSerial(i) = XmlNodeList.Item(i).InnerXml
        Next
        For l = 0 To ListBox1.Items.Count - 1 Step 1
            For m = 0 To MassLinkSerial.Length - 1 Step 1
                If ListBox1.Item(i) <> MassLinkSerial(m) Then
                    Dim msg As String = ListBox2.Items(l)
                    SendMsg(msg, Form2.TextBox1.Text, Form2.TextBox2.Text, Form2.TextBox3.Text, Form2.TextBox5.Text)
                    Dim Str As String = MassNameSerial(m)
                    Dim allIp As MatchCollection = Regex.Matches(Str, "\[CDATA\[(.*?)\]")
                    For Each S As Match In allIp
                        ListBox1.Items(l) = S.Groups(1).Value
                    Next
                End If
            Next
        Next
Условие на выходе получается True, специально все значения подставляю. VS13
На форме 2 листбокса и кнопка. На кнопке собственно и цикл
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
20.01.2015, 19:54
Цитата Сообщение от BigProfessor Посмотреть сообщение
VB.NET
1
If ListBox1.Item(i)
У Вас i всегда - одно и то же число, и оно равно XmlNodeList.Count - 1
Первый цикл прошел и переменная осталась неизменной.
Это так задумано?

Добавлено через 1 минуту
Заодно совет: не пишите
VB.NET
1
Step 1
Цикл по умолчанию итак имеет шаг в единицу
0
0 / 0 / 0
Регистрация: 17.01.2015
Сообщений: 36
20.01.2015, 20:03  [ТС]
Не, не задумано Там l вместо i) я просто чистил реальное условие. что бы было более понятно, без всего кода, вот случайно не то вписал. Так а почему оно вообще не работает? Вроде все правильно, VS ошибок и предупреждений не выдает
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
20.01.2015, 20:17
Еще там во втором цикле есть вложенный подцикл.
И в нем есть проверка
VB.NET
1
If ListBox1.Item(i) <> MassLinkSerial(m) Then
Если это условие выполняется, то программа доберется до третьего вложенного цикла.

В этом случае она переберет всю коллекцию allIp и зачем-то все попытается записать в один и тот же индекс списка, каждый раз переписывая свое предыдущее значение.

Если коллекция содержит один-единственный элемент, то существование третьего цикла вообще ставится под вопрос, ибо устраивать его из-за одной итерации - не совсем логично.

Пора осваивать отладку

Поставьте точку останова, к примеру, на строке 10 или 11 (в Вашем редакторе, естественно, другие номера строк)
Название: Без-имени-1.jpg
Просмотров: 37

Размер: 35.0 Кб

И запустите программу.
Как выполнение дойдет до этой точки, код встанет на паузу.
Нажимая F8 Вы будете пошагово выполнять код. Наводите мышкой на переменные и смотрите, что и чему равно в данный момент времени. Заходит ли прога в цикл, вносит ли изменения в листбокс и т.д.

Это очень мощный инструмент, и без него немыслима жизнь программиста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.01.2015, 20:17
Помогаю со студенческими работами здесь

Не получается передать результат парсинга в другой контроллер
Здравствуйте. Поясните почему возникает такая ситуация. У меня есть класс наследник NSOperation. В этом классе происходит парсинг xml после...

Объяснить результат и вывести на экран результат логического выражения
Объяснить результат и вывести на экран результат логического выражения T = S для заданных значений логических переменных a, b, c. ...

Вычислить уранение в Masm и вывести результат результат в окно
y=(a-b)*(b-c)/a a=4 b=3 с=2

Занести данные парсинга в массив и вывести в RichTextBox
Здравствуйте! Проблема в следующем... Я получаю страничку HTML при парсинге делаю выборку на активные ссылки (они находятся в &lt;div...

C клавиатуры вводятся два вещественных числа. Вывести результат их произведения в виде равенства. Например, для введенных чисел 5 и 7 вывести 5*7=35
Пожалуйста помогите!


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru