La stringa di input è qualcosa del tipo: OU = TEST: This001. Abbiamo bisogno di extra "This001". Il meglio di C#.Regex per abbinare una stringa dopo i due punti
risposta
Che dire:
/OU=.*?:(.*)/
Ecco come funziona:
OU= // Must contain OU=
. // Any character
* // Repeated but not mandatory
? // Ungreedy (lazy) (Don't try to match everything)
: // Match the colon
( // Start to capture a group
. // Any character
* // Repeated but not mandatory
) // End of the group
Per la /
sono delimitatori di sapere dove l'inizio regex e dove finisce (e per le opzioni di aggiunta) .
Il gruppo catturato conterrà This001
.
Ma sarebbe più veloce con un semplice Substring()
.
yourString.Substring(yourString.IndexOf(":")+1);
Risorse:
"OU =" puzza come si sta facendo una Directory o LDAP Ricerca attiva e rispondendo ai risultati. Mentre regex è uno strumento geniale, volevo solo assicurarmi che anche tu sia a conoscenza delle eccellenti classi System.DirectoryServices.Protocols create per analizzare, filtrare e manipolare solo questo tipo di dati.
Il SearchResult, SearchResultEntry e DirectoryAttribute in particolare sarebbero gli amici che potreste cercare. Non dubito che sia possibile regex o sottostringa in modo intelligente come il prossimo, ma è anche bello avere un altro buon strumento nella casella degli strumenti.
Hai provato queste lezioni?
Questo proviene da un certificato. "OU =" fa parte del nome del soggetto da System.Security.Cryptography.X509Certificates. – Icerman
se il OU=TEST:
è il vostro requisito prima la stringa che si desidera far corrispondere, utilizzare questa espressione regolare:
(?<=OU\s*=\s*TEST\s*:\s*).*
che regex trova qualsiasi lunghezza del testo dopo i due punti, mentre il testo prima dei due punti è solo un requisito .
È possibile sostituire TEST
con [A-Za-z]+
per adattarsi a qualsiasi testo diverso TEST, oppure è possibile sostituire con TEST
[\w]+
per adattarsi a qualsiasi lunghezza di ogni combinazione di lettere e numeri.
\s*
significa che potrebbe essere un qualsiasi numero di spazi bianchi o nulla in quella posizione, rimuoverlo se non è necessario un tale controllo.
una soluzione senza espressioni regolari:
var str = "OU=TEST:This00:1";
var result = str.Split(new char[] { ':' }, 2)[1];
// result == This00:1
Regex vs Spalato vs IndexOf
Split
var str = "OU=TEST:This00:1";
var sw = new Stopwatch();
sw.Start();
var result = str.Split(new char[] { ':' }, 2)[1];
sw.Stop();
// sw.ElapsedTicks == 15
Regex
var str = "OU=TEST:This00:1";
var sw = new Stopwatch();
sw.Start();
var result = (new Regex(":(.*)", RegexOptions.Compiled)).Match(str).Groups[1];
sw.Stop();
// sw.ElapsedTicks == 7000 (Compiled)
IndexOf
var str = "OU=TEST:This00:1";
var sw = new Stopwatch();
sw.Start();
var result = str.Substring(str.IndexOf(":") + 1);
sw.Stop();
// sw.ElapsedTicks == 40
Vincitore: Split
Link
Buona idea, ma solo "OU =" e ":" hanno valore fisso/lunghezza. Tutto il resto è variabile. – Icerman
@Icerman: la lunghezza non ha importanza, se ha almeno uno ':' otterrà tutto dopo di essa. – BrunoLM
'str.Split (new char [] {':'}, 2)' il secondo parametro indica quanti pezzi sarà diviso. Dire di dividere in 2 causerà 'OU = jjj: kkkkkk: aaaaa: ssssss: xxxx' restituirà 2 gruppi:' OU = jjj' e 'kkkkkk: aaaaa: ssssss: xxxx' – BrunoLM
- 1. Regex per abbinare una stringa JSON
- 2. Regex da abbinare quando una stringa è presente due volte
- 3. Utilizzando regex per abbinare stringa tra due stringhe escludendo stringhe
- 4. Regex per abbinare una lumaca?
- 5. Regex per abbinare la stringa Java
- 6. Regex per abbinare la prima occorrenza di una stringa
- 7. Regex e due punti (:)
- 8. regex per abbinare EOF
- 9. Regex: come abbinare l'ultimo punto in una stringa
- 10. Python regex per abbinare una parola specifica
- 11. Come abbinare stringa tra virgolette utilizzando Regex
- 12. Regex per abbinare URL specifico con stringa di query
- 13. Regex per abbinare una o due virgolette ma non tre di fila
- 14. Come abbinare i caratteri accentati con una regex in Python?
- 15. Regex per abbinare 1 o meno occorrenza di stringa?
- 16. Regex per abbinare cifre di lunghezza specifica
- 17. Regex per abbinare un nome utente
- 18. Regex per abbinare una parola con segni + (più)
- 19. C# Regex per abbinare parole dalla lista
- 20. Regex come abbinare un carattere opzionale
- 21. Regex per abbinare la singola nuova linea. Regex per abbinare la doppia nuova riga
- 22. Come si crea una stringa per abbinare un'espressione regolare?
- 23. RegEx che abbinerà l'ultima occorrenza di punti in una stringa
- 24. Python 3 Come ottenere una stringa tra due punti usando regex?
- 25. Python divide una stringa usando regex
- 26. Java REGEX per abbinare un numero esatto di cifre in una stringa
- 27. abbinare una linea utilizzando bash regex
- 28. Regex per abbinare tutti i caratteri eccetto lettere e numeri
- 29. Regex per abbinare tutti i caratteri e le nuove linee?
- 30. Espressione regolare per abbinare due frasi separate
Non ho mai usato quella sintassi, interessante, qualcosa da guardare oggi :) – leppie
Non riesco a trovare alcuna documentazione sul costrutto regex, puoi fornire un riferimento? – leppie
@leppie, aggiornato con ulteriori informazioni, ma dovresti andare su [regular-expressions.info] (http://www.regular-expressions.info/) ci sono molte informazioni sulle regex lì. –