Was mache ich hier falsch?Regex für alphanumerische Zeichen und Leerzeichen
string q = "john s!";
string clean = Regex.Replace(q, @"([^a-zA-Z0-9]|^\s)", string.Empty);
// clean == "johns". I want "john s";
Was mache ich hier falsch?Regex für alphanumerische Zeichen und Leerzeichen
string q = "john s!";
string clean = Regex.Replace(q, @"([^a-zA-Z0-9]|^\s)", string.Empty);
// clean == "johns". I want "john s";
nur ein FYI
string clean = Regex.Replace(q, @"[^a-zA-Z0-9\s]", string.Empty);
wäre eigentlich besser wie
string clean = Regex.Replace(q, @"[^\w\s]", string.Empty);
Ich vermute, dass^funktioniert nicht so, wie Sie denken, dass es außerhalb einer Zeichenklasse tut.
Was Sie sagen, ist es, alles zu ersetzen, was kein alphanumerisches Zeichen ist, durch eine leere Zeichenfolge ODER ein beliebiges führendes Leerzeichen. Ich denke, was du damit sagen willst ist, dass Leerzeichen nicht ersetzt werden können - versuche das \ s in die Klasse [] zu verschieben.
du hast Recht, das beginnt mit (was ich wusste, aber es ist spät) –
Es scheint zwei Probleme zu geben.
Ich glaube, Sie die folgenden regex wollen @ "([^ a-zA-Z0-9 \ s]) +"
Würde das nicht alle alphanumerischen Zeichen und Leerzeichen durch die leere Zeichenfolge ersetzen? – zigdon
In Bezug auf # 2 ist der Quantifizierer nicht wirklich wichtig, da er alle nicht übereinstimmenden Zeichen in der Zeichenfolge ersetzen möchte und nicht nur eine einzige Ausführung, die eine globale Ersetzung erfordert (.../g in Perl, nicht sicher) der C# -Syntax), mit oder ohne */+. –
C# regex ist @ "^ [a-zA-Z0-9 \ r] + $" – marcel
Die circumflex in den eckigen Klammern bedeuten, dass alle Zeichen mit Ausnahme des nachfolgenden Bereichs. Sie möchten einen Zirkumflex außerhalb von eckigen Klammern.
Ja, ich will es drinnen.Passen Sie alles an, was nicht diese Zeichenbereiche sind. –
Oh, wo du "Ich will" gesagt hast, ich dachte, du meintest, du wolltest einen regulären Ausdruck, der dem entspricht. Du meinst, du willst, dass das Ergebnis von Ersetzen das ist. Sie möchten also, dass der reguläre Ausdruck nicht dem entspricht. Mein Gehirn schmerzt. –
ich es bekommen habe:
string clean = Regex.Replace(q, @"[^a-zA-Z0-9\s]", string.Empty);
Haben Sie nicht wissen Sie \ s in den Klammern setzen könnte
Ihre Regex passt nur Strings an, die keine alphanumerische Zahl, Zahlen oder Leerzeichen enthalten. Das^am Anfang eines [] bedeutet "nichts drin" – JaredPar
Das ist genau was ich will. In Regex.Replace möchte ich alles abgleichen, das NICHT ein Buchstabe, eine Zahl oder ein Leerzeichen ist. –
Ah okay, klarer jetzt. – JaredPar
Dies:
string clean = Regex.Replace(dirty, "[^a-zA-Z0-9\x20]", String.Empty);
\ x20 ist ascii hex für 'Leerzeichen' Zeichen
Sie können weitere einzelne Zeichen hinzufügen, die Sie zulassen möchten. Wenn Sie zum Beispiel "?" in der Rückgabestring in Ordnung zu sein add \ x3f.
können Sie auch ein ** ASCII ** Zeichen als oktal abgleichen. In diesem Fall repräsentiert ** \ 040 ** ein Leerzeichen. –
... oder Sie könnten sie einfach wörtlich eingeben, wenn sie einfache Dinge wie Leerzeichen oder? Sind: '[^ A-Za-z0-9?]' Etc. – ChrisF
Die folgende Regex für Raum Aufnahme in Textbox ist.
Regex r = new Regex("^[a-zA-Z\\s]+");
r.IsMatch(textbox1.text);
Das funktioniert gut für mich.
Wäre '' A-z \\ s] 'nicht einfacher als' [a-zA-Z \\ s] '? – Alexander
ok, duh ich bin dumm^beginnt mit ... ich bin müde. weiß immer noch nicht, wie man nur ein Leerzeichen anpasst –