Et bien pour une expression telle que:
ax²+
bx+
cOn va par l'intermédiaire d'un pattern reconnaître la forme de l'équation et vouloir récupérer
a,
b et
c afin de résoudre l'équation.
Après, si on a
x=5, on fait le calcul dans un fonction spécifique.
De même, on aurait
ax²+
bx+
c=0. Après, on peut appliquer les formules de maths dans une autre fonction.
Pour identifier
ax²+
bx+
c=0 avec
c>0 par exemple, le pattern serait (je te laisse chercher pourquoi? et s'il y a une erreur, désolé):
[0-9]*x²\+[0-9]*x\+[0-9]+=0
ou plus simplement:
\d*x²\+\d*x\+\d+=0
Si dans l'équation
ax²=
b, on veut chercher
a, on le prendrait comme çà (là aussi je te laisse chercher pourquoi?):
(?<"variable">\d*)x²=\d*;
a est récupéré à l'aide du mot clé.
Une fois qu'on a notre 'variable' On peut faire les calculs qu'on veut.
Un exemple qui vient d'une de mes dernières applications, j'ai mis un texte assez simple de façon à rendre l'exemple explicite, cela fait partie d'une méthode capable de calculer des expressions mathématiques avec parenthèses dans une phrase.
Imports System.Text.RegularExpressions
(...)
Dim texte
AsString =
"14*20" Dim reg
As Regex
Dim m
As MatchCollection
Try ' On fait une multiplication
' Le pattern représente une expression a*b et peut-être entre parenthèses
reg =
New Regex(
"\(?(?<1>-?\d+)\*(?<2>-?\d+)\)?")
' On recherche avec Match m = reg.Matches(texte)
' Ce bout de code est fait pour calculer toutes les multiplications qu'on
' aurait pu trouver dans une phrase, d'où la boucle (r1 et r2 sont des String) For i
As Integer = m.Count - 1
To 0
Step -1
Dim rm
As Match = m.Item(i)
r1 = rm.Groups(1).ToString
' Récupère la valeur de (?<1>-?\d+) r2 = rm.Groups(2).ToString
Dim ir
As Integer =
CInt(r1) *
CInt(r2)
' Cast et multiplication (...)
Next Catch ex
As Exception
MessageBox.Show(ex.StackTrace _
,
"Erreur dans la méthode de calcul avec regex > multiplication" _
, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1)
End Try
Voilà, sinon expose-nous ton code si tu as des problèmes!