Imports System.Text.RegularExpressions
Public Class UsingRegEx
Const Blank As Char = ChrW(32)
Const pt1 As String = "--.*[^\r\n]" ' -- (Singleline Comment)
Const pt2 As String = "/\*((?:.|\s)*?)\*/" ' /**/ (Multiline Comment)
Const pt3 As String = "[N]?'((?:.|\s)*?)'" ' Single Quotes
Const pt4 As String = "\u0022((?:.|\s)*?)\u0022" ' Double Quotes
Const pt5 As String = "\[((?:.|\s)*?)\]" ' []
Const Pattern_Ignore = pt1 + "|" + pt2 + "|" + pt3 + "|" + pt4 + "|" + pt5
Private Sub Btn_Process_Click(sender As Object, e As EventArgs) Handles Btn_Process.Click
LB_Words.Items.Clear()
LB_Keywords.Items.Clear()
Dim strSQL As String = TB_Source.Text
Dim strMOD As String = strSQL
For Each m As Match In Regex.Matches(strMOD, Pattern_Ignore, RegexOptions.Multiline)
strMOD = strMOD.Remove(m.Index, m.Length)
strMOD = strMOD.Insert(m.Index, FillWhiteSpaces(m.Value))
Next
TB_Modified.Text = strMOD
'strMOD = Regex.Replace(strSQL, pattern, String.Empty)
Dim x As List(Of Char) = "(),;!=<>+-*/%^|&~".ToList
For Each c In x
strMOD = strMOD.Replace(c, Blank + c + Blank)
Next
strMOD = Regex.Replace(strMOD, "\s", Blank)
strMOD = Regex.Replace(strMOD, "[ ]{2,}", Blank)
Dim Words As List(Of String) = strMOD.Trim.Split(Blank).ToList
For Each word In Words
If Regex.IsMatch(word, "^[a-zA-Z_@]+$") Then
LB_Words.Items.Add(word)
If SQL_KeyWords.Contains(word.ToUpper) Then
LB_Keywords.Items.Add(word)
End If
End If
Next
End Sub
Function FillWhiteSpaces(str As String) As String
Return Regex.Replace(NZ(str), "\s", ChrW(&HFFFD))
End Function
Private Function NZ(str As String) As String
If String.IsNullOrEmpty(str) Then
Return String.Empty
Else
Return str
End If
End Function
End Class





پاسخ با نقل قول
