прошу помощи

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

strelec
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 28.02.2009 (Сб) 22:04

Re: прошу помощи

Сообщение strelec » 05.10.2011 (Ср) 19:09

блин приходится делать такие коды )

Код: Выделить всё
Function SearchText(ByVal page As String, ByVal FromSearch As String, ByVal ToSearch As String)
        Dim PageStart As Integer
        Dim Result As String
        PageStart = InStr(page, FromSearch)
        For cnum As Integer = PageStart To page.Length - 1
            If Mid(page, cnum, ToSearch.Length) = ToSearch Then
                Result = Mid(page, PageStart, (cnum - PageStart))
            End If
        Next
        Return Result
    End Function

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Re: прошу помощи

Сообщение Qwertiy » 05.10.2011 (Ср) 20:56

strelec писал(а):1.как надо искать в тексте слово который начинается с "прог" и кончается на "ние" и вывести результат
2.все тоже самое но чтобы найти в MyText слово который начинается с "прог" но в результате будет "раммирование" (прог) отпадает
3.как заменит все что начинается с "прог" и кончается на "ние" на слово "vb.net"

Код: Выделить всё
Imports System.Text.RegularExpressions

Module All

Sub Main()
  Dim Text As String = "Книга программирование, язык программирование, большой проект , начинаем тестирование "

  Dim Res1() As String = (From M As Match In Regex.Matches(Text, "прог\w*ние") Select M.Value).ToArray()
  Dim Res2() As String = (From M As Match In Regex.Matches(Text, "прог\w*") Select M.Value.Substring(4)).ToArray()
  Dim Res3 As String = Regex.Replace(Text, "прог\w*ние", "vb.net")

  For Each Str As String In Res1
    Console.WriteLine(Str)
  Next Str
  Console.WriteLine()

  For Each Str As String In Res2
    Console.WriteLine(Str)
  Next Str
  Console.WriteLine()

  Console.WriteLine(Res3)

  Console.ReadKey()
End Sub

End Module

strelec писал(а):блин приходится делать такие коды )

Почитай про методы класса String. Кстати, насколько я знаю (сам не проверял), использование Mid замедляет программу в несколько раз по сравнению с аналогичным использованием Substring.

PS: Используй тег [code], а не [icode], где это требуется.

UPDATE: Был невнимателен, "прог.*?ние" исправлено на "прог\w*ние". Хотя, это тоже не поиск слова. Надо ещё границы проверять, а потом обрезать.

UPDATE:
Код: Выделить всё
  Dim Res3 As String = Regex.Replace(Text, "\Wпрог\w*ние\W", Function(M As Match) String.Format("{0}vb.net{1}", M.Value(0), M.Value(M.Value.Length - 1)))
Res1 и Res2 тоже надо немного изменить.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 05.10.2011 (Ср) 21:14

Что-то я какой-то бред пишу :lol:

Вот правильный код:
Код: Выделить всё
  Dim Res1() As String = (From M As Match In Regex.Matches(Text, "\bпрог\w*ние\b") Select M.Value).ToArray()
  Dim Res2() As String = (From M As Match In Regex.Matches(Text, "\bпрог\w*\b") Select M.Value.Substring(4)).ToArray()
  Dim Res3 As String = Regex.Replace(Text, "\bпрог\w*ние\b", "vb.net")

strelec
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 28.02.2009 (Сб) 22:04

Re: прошу помощи

Сообщение strelec » 06.10.2011 (Чт) 15:09

а что надо писать вместо "\bпрог\w*ние\b" если я ищу все что находится в
Код: Выделить всё
<script> ....... </script>

и еще как сделать чтобы все что внутри
Код: Выделить всё
<script> ....... </script>
не показывало?

Qwertiy Огромное тебе спасибо

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 06.10.2011 (Чт) 15:33

strelec писал(а):<script> ....... </script>

А в чём принципиальное отличие от:
Код: Выделить всё
For Each Form As Match In Regex.Matches(Page, "<form.*?</form>")
Если только в закрывающей скобке? Но я не вижу смысла её ставить, т. к. там наверняка будут аттрибуты.
Хотя, нельзя сказать, что такие проверки дают 100% результат. Возможны ситуации, когда они не работают.

strelec писал(а):как сделать чтобы все что внутри не показывало?

"Внутри" значит innerHtml или всё-таки outerHtml, т. е. содержимое тега или содержимое всесте с самим тегом?

strelec
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 28.02.2009 (Сб) 22:04

Re: прошу помощи

Сообщение strelec » 06.10.2011 (Чт) 15:51

вот к примеру мне надо найти с "|-->" до "<!--QuoteEEnd-->"
или с "btl" до "</h3>"
или с "Letitbit" до "<!--QuoteBegin-->"
что надо писать в этом случае?
в основном моя задача с нтмл брать информацию которое там написано и линк .с линком разобрался с текстом тоже просто хочу применит твой код но не как не получается(

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 06.10.2011 (Чт) 16:31

Выражение зависит от того, что ты ищешь и где. По твоему описанию я не могу ответить.

strelec
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 28.02.2009 (Сб) 22:04

Re:

Сообщение strelec » 06.10.2011 (Чт) 17:00

то что отмечено красным http://downloadfile.ucoz.ru/test.html

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 06.10.2011 (Чт) 17:15

Так пробовал <h3 class="btl">.*?</h2></center>? А вообще, не понимаю, зачем оно тебе в таком виде.

strelec
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 28.02.2009 (Сб) 22:04

Re: прошу помощи

Сообщение strelec » 08.10.2011 (Сб) 16:02

Код: Выделить всё
Dim Text As String = "Книга программирование, язык программирование, большой проект , начинаем тестирование "
       
        For Each nn In Regex.Matches(text, "(\d+\w)программирование")
            MsgBox(nn.Groups(1).ToString)
        Next

как сделать чтоб регистр не имело значении в поиске
программирование -Программирование

strelec
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 28.02.2009 (Сб) 22:04

Re: прошу помощи

Сообщение strelec » 08.10.2011 (Сб) 16:13

сам разобрался )

For Each nn In Regex.Matches(text, "(\d+)"">документальный<", RegexOptions.IgnoreCase)
MsgBox(nn.Groups(1).ToString)
Next

strelec
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 28.02.2009 (Сб) 22:04

Re: прошу помощи

Сообщение strelec » 09.10.2011 (Вс) 17:40

пцц о5 проблема )

Код: Выделить всё
For Each nn In Regex.Matches(Picture, "http.*?jpg", RegexOptions.IgnoreCase)
PicColection = nn.Groups(0).ToString

Next

а если я ищу все форматы к примеру jgp,jpeg,bmp .и.т.д как это сделать ? что писать вместо http.*?jpg"

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: прошу помощи

Сообщение FireFenix » 09.10.2011 (Вс) 17:48

Давай всё же ты почитаешь и разберёшь регулярные выражения, прежде чем писать код!
Хотя бы Wiki
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

strelec
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 28.02.2009 (Сб) 22:04

Re: прошу помощи

Сообщение strelec » 10.10.2011 (Пн) 12:41

ребята есть такой вопрос
к примеру есть такой урл http://мой сайт/engine/go.php?url=aHR0cDovL3R1cmJvYml0Lm5ldC8wZmls
2UuaHRtbA%3D%3D
при переходе оно отправляет на к примеру на http://мой сайт/picture/1.bmp
как распознат этот линк ?, с помощью
Код: Выделить всё
Response = CType(.GetResponse(), HttpWebResponse)
redirect = Response.ResponseUri.ToString

получается но что нибудь получше есть? )

strelec
Обычный пользователь
Обычный пользователь
 
Сообщения: 93
Зарегистрирован: 28.02.2009 (Сб) 22:04

Re: прошу помощи

Сообщение strelec » 13.10.2011 (Чт) 15:58

Код: Выделить всё
Result = New StreamReader(Response.GetResponseStream(), Encoding.GetEncoding(Response.CharacterSet)).ReadToEnd()

делаю такой код чтоб распознавать юникод все работает нормально но но на одном сайте не показывает стал разбираться
сервер дает ISO-8859-1 принимаю ету кодировку но нет о5 знаки место слова после поставил

Код: Выделить всё
Result = New StreamReader(Response.GetResponseStream(), Encoding.Default).ReadToEnd()

и уже нормально (
как правильнее сделать ? что писать вместо
Код: Выделить всё
Result = New StreamReader(Response.GetResponseStream(), Encoding.GetEncoding(Response.CharacterSet)).ReadToEnd()
?

Пред.

Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28

    TopList