Aiuto RegexTutto,
Cercando di esplorare un po' meglio le espressioni regolari . Posso ottenere ciò che voglio con un semplice Contains(), ma cercando di vedere quale sarebbe l'equivalente usando le espressioni regolari.
La regex che ho non funziona come mi aspetto, qualcuno può indicarmi la regex equivalente e spiegare cosa ho sbagliato?
Clear Log(); Clear Globals();
dt = Open( "$SAMPLE_DATA/Cities.jmp" );
dt:city[2] = "aLBUQUERQUE";
CityList = dt:City << Get Values;
Des = list();
for(i = 1 , i <= N Items(CityList),i++,
If(!IsMissing(Regex(Char(CityList[i]),"^a|A[LB]*")),
Insert Into(Des,CityList[i]);
);
);
/*for(i = 1 , i <= N Items(CityList) , i++,
If(Contains(CityList[i],"aLB")|Contains(CityList[i],"ALB"),
Insert Into(Des,CityList[i]);
);
);*/
Show(Des);
//Close All(Data Tables,"No Save");Ri: Aiuto RegexIn questo momento stai abbinando O una 'a' all'inizio della stringa ('^a') O una 'A' seguita da zero o più lettere 'L' o 'B' ('A[LB]*').Alcune note:
- Non ci sono parentesi attorno a o quindi la corrispondenza è l'intera stringa prima o dopo il '|'.Quindi se la stringa inizia con 'a' è fatta e non corrisponderà a nient'altro.
- Le parentesi quadre significano corrispondere a qualsiasi carattere al loro interno.
- L'asterisco indica che corrisponde a zero o più caratteri o gruppi precedenti, in questo caso indica il gruppo all'interno delle parentesi quadre.
- Insieme, il lato destro di o corrisponderà a uno qualsiasi di questi, ovunque all'interno della stringa (non solo all'inizio):
- UN
- AL
- AB
- CAMICE
- ABL
- ALLLLLLLLLLBLLBBBBLLBLLB
- La stringa aA sarebbe in realtà due diverse corrispondenze della funzione Regex.
Probabilmente vuoi questo: "^(a|A)LB.*$", o questo: "^[aA]LB.*$"
- Partendo dall'inizio della stringa, trova una a o una A, seguita da
- I caratteri LB, in ordine, seguiti da
- Zero o più di qualsiasi carattere, il punto è qualsiasi carattere (.*), seguito da
- La fine della corda.Questo probabilmente non è necessario.
Des = {"ALBANY", "aLBUQUERQUE"};
Guardare regexr.com , non solo aiuta a controllare il tuo codice, ma ha buone sezioni di "riferimento" e "cheatsheet" sulla sinistra.Quasi sempre attivo il multiline (flag in alto a destra).
Modificato per chiarire che la corrispondenza può essere ovunque all'interno della stringa.