Ti prego, aiutami a creare un'espressione regolare per analizzare la mia dichiarazione di SQL

StackOverflow https://stackoverflow.com/questions/591105

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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top