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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
Sub Main()
Dim results As String() = Test.ExtraireChaineMinCompiled("myValue = _
myFunction(myParameter,myVar)*(myConst)", "(", ")")
End Sub
Public Class Test
Public Shared Function ExtraireChaineMinCompiled( _
ByVal chaine As String, ByVal borneDepart As String, _
ByVal borneFin As String) As String()
borneDepart = PreparerChaine(borneDepart)
borneFin = PreparerChaine(borneFin)
Dim pattern As New StringBuilder(borneDepart)
pattern.Append("(?<output>[^")
pattern.Append(borneDepart)
pattern.Append(borneFin)
pattern.Append("]*)")
pattern.Append(borneFin)
Dim matchColl As MatchCollection = _
New Regex(pattern.ToString(), RegexOptions.Compiled And _
RegexOptions.ExplicitCapture).Matches(chaine)
If (matchColl.Count > 0) Then
Dim tabString(matchColl.Count - 1) As String
Dim i As Integer = 0
While i < matchColl.Count
tabString(i) = matchColl(i).Groups("output").Value
i += 1
End While
Return tabString
Else
Return Nothing
End If
End Function
Private Shared ReadOnly CaracteresSpecifiques() As Char = _
{"("c, ")"c, "["c, "]"c, "."c, "^"c, "$"c, "*"c, "?"c, "+"c}
Private Shared Function PreparerChaine(ByVal chaine As String) As _
String
If Array.IndexOf(CaracteresSpecifiques, CChar(chaine)) > -1 Then
Dim sb As New StringBuilder("(\")
sb.Append(chaine)
sb.Append(")")
Return sb.ToString()
End If
Return chaine
End Function
End Class |
Partager