rovesciare devono essere sfuggito nelle espressioni regolari - e anche hanno bisogno di essere sfuggito in C#, a meno di utilizzare verbatim string literals. Quindi uno di questi dovrebbe funzionare:
var regexItem = new Regex(@"^[a-zA-Z0-9\\ ]*$");
var regexItem = new Regex("^[a-zA-Z0-9\\\\ ]*$");
Entrambi assicurano che il contenuto seguente stringa viene passata al Regex
costruttore:
^[a-zA-Z0-9\\ ]*$
Il codice Regex
vedrà, quindi, la doppia barra rovesciata e trattarlo come "Voglio davvero abbinare il carattere backslash."
Fondamentalmente, è sempre necessario distinguere tra "il contenuto della stringa che si desidera passare al motore regex" e "la rappresentazione letterale della stringa nel codice sorgente". (Questo è vero non solo per le espressioni regolari, naturalmente Il debugger non aiuta fuggendo in vigilanza finestre, ecc.)
EDIT: Ora che la questione è stato modificato per mostrare che in origine aveva tre backslash , questo non è C# valido. Ho il sospetto che stavate puntando "una stringa con tre backslash in", che sarebbe uno di questi:
var regexItem = new Regex(@"^[a-zA-Z0-9\\\ ]*$");
var regexItem = new Regex("^[a-zA-Z0-9\\\\\\ ]*$");
... ma non ho bisogno di fuggire lo spazio per quanto riguarda l'espressione regolare è ha riguardato.
fonte
2013-02-01 07:07:47
"non sembra funzionare" significa? Cosa fa che non ti aspetti? –