Ti prego, aiutami a creare un'espressione regolare per analizzare la mia dichiarazione di SQL
-
09-09-2019 - |
Domanda
Voglio estrarre
FROM codes WHERE FieldName='ContactMethod' and IsNull(Deactived,'') != 'T'
da
SELECT FieldDescription,FieldValue FROM codes WHERE FieldName='ContactMethod'
and IsNull(Deactived,'') != 'T' order by fielddescription
usando un'espressione regolare. Ho un regex come questo:
\FROM.*\order
che estrae
FROM codes WHERE FieldName='ContactMethod' and IsNull(Deactived,'') != 'T' order
Inoltre, come posso liberarmi della capitalizzazione?
Grazie
Soluzione
Il trucco sarebbe probabilmente per catturare la parte che si vuole realmente con parentesi:
(FROM.*) order
Questo sarebbe avidamente corrispondere fino all'ultimo order
, se desideri solo fino alla prima occorrenza, match pigramente:
(FROM.*?) order
Altri suggerimenti
Ampliando la risposta di Fabian Steeg
Dim regex As Regex = New Regex( _
"(FROM.*?) ORDER", _
RegexOptions.IgnoreCase _
Or RegexOptions.CultureInvariant _
Or RegexOptions.IgnorePatternWhitespace _
Or RegexOptions.Compiled _
)
Dim ms As MatchCollection = regex.Matches(InputText)
dove InputText è naturalmente la stringa di query SQL.
ms (1) dovrebbe tenere la partita parentesi
Se si scende ad esso si può ignorare la capitalizzazione facendo (F | f) (R | R) (O | o). (M | m)
RegexBuddy ($ 40) o Il Regex Coach (gratuito) sarebbe davvero aiutare a progettare ed eseguire il debug delle espressioni regolari per la maggior parte delle piattaforme.