Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Imports System.Text.RegularExpressions
- Imports System.Net
- Public Class RegexFound
- Implements IDisposable
- Private Structure struct_Order
- Public Index As Integer
- Public Group As Integer
- Public Pattern As String
- Public Navigate As Boolean
- End Structure
- Private mOrder_List As List(Of struct_Order)
- Private Web As Net.WebClient
- Private mCurrentData As String
- Public Sub New()
- mOrder_List = New List(Of struct_Order)
- Web = New WebClient
- Web.Encoding = System.Text.Encoding.UTF8
- End Sub
- Public Sub Start(Url As String)
- mCurrentData = Web.DownloadString(Url)
- End Sub
- Public Sub Start_FromText(text As String)
- mCurrentData = text
- End Sub
- ''' <summary>
- ''' Add regex
- ''' </summary>
- ''' <param name="Index">-1 = every match found or 0=first match, 1=second match, etc...</param>
- ''' <param name="Group">create group with (parenthesis). group 0=no group, 1=first group</param>
- ''' <param name="Pattern">regex pattern</param>
- ''' <param name="Navigate">if the match is url you can download string from it</param>
- ''' <remarks></remarks>
- Public Sub Add(Index As Integer, Group As Integer, Pattern As String, Optional Navigate As Boolean = False)
- Dim mNewOrder As struct_Order
- mNewOrder.Index = Index
- mNewOrder.Pattern = Pattern
- mNewOrder.Navigate = Navigate
- mNewOrder.Group = Group
- mOrder_List.Add(mNewOrder)
- End Sub
- Public Sub Clear()
- mOrder_List.Clear()
- End Sub
- ''' <summary>
- ''' test pattern with the current data without save it to working text
- ''' </summary>
- ''' <param name="Pattern"></param>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Public Function Test(Pattern As String) As String
- Dim Result As MatchCollection
- Result = Regex.Matches(mCurrentData, Pattern)
- Dim data As String = Nothing
- For i As Integer = 0 To Result.Count - 1
- data &= i & ": " & Result(i).Value
- If i < Result.Count - 1 Then data &= vbCrLf
- Next
- Return data
- End Function
- ''' <summary>
- ''' process every regex and return final data
- ''' </summary>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Public Function Process() As String
- Dim Result As MatchCollection
- For i As Integer = 0 To mOrder_List.Count - 1
- Result = Regex.Matches(mCurrentData, mOrder_List(i).Pattern)
- If mOrder_List(i).Index = -1 Then
- mCurrentData = ""
- For j As Integer = 0 To Result.Count - 1
- mCurrentData &= Result(j).Groups(mOrder_List(i).Group).Value
- If j < Result.Count - 1 Then mCurrentData &= vbCrLf
- Next
- Else
- mCurrentData = Result(mOrder_List(i).Index).Groups(mOrder_List(i).Group).Value
- End If
- If mOrder_List(i).Navigate Then
- mCurrentData = Web.DownloadString(mCurrentData)
- End If
- Next
- Return mCurrentData
- End Function
- #Region "IDisposable Support"
- Private disposedValue As Boolean
- Protected Overridable Sub Dispose(disposing As Boolean)
- If Not Me.disposedValue Then
- If disposing Then
- mOrder_List.Clear()
- mOrder_List = Nothing
- Web.Dispose()
- Web = Nothing
- End If
- End If
- Me.disposedValue = True
- End Sub
- Public Sub Dispose() Implements IDisposable.Dispose
- Dispose(True)
- GC.SuppressFinalize(Me)
- End Sub
- #End Region
- End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement