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
|
Public Shared ReadOnly CaracteresSpecifiques() As Char = _
{"("c, ")"c, "["c, "]"c, "."c, "^"c, "$"c, "*"c, "?"c, "+"c}
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(".*(")
pattern.Append(borneDepart)
pattern.Append(")(?<result>[^(")
pattern.Append(borneDepart)
pattern.Append(")(")
pattern.Append(borneFin)
pattern.Append(")]*)(")
pattern.Append(borneFin)
pattern.Append(").*")
Dim m As Match = New Regex(pattern.ToString(), _
RegexOptions.Compiled).Match(chaine)
If m.Groups("result").Value = String.Empty Then Return _
pattern.ToString()
Return m.Groups("result").Value
End Function
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 |
Partager