Regex für alle DRUCKBAREN Zeichen
Gibt es eine spezielle regex-Anweisung wie \w, bezeichnet alle druckbaren Zeichen? Ich möchte, um zu überprüfen, ob ein string nur ein Zeichen enthält, das ausgedruckt werden kann, D. H. enthalten nicht ASCII-Zeichen wie \b (bell), oder null, etc. Alles, was auf der Tastatur ist in Ordnung, und so sind UTF chars.
Wenn es nicht eine spezielle Anweisung, wie kann ich festlegen, das in einem regex?
InformationsquelleAutor der Frage | 2009-08-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist eine POSIX-Zeichenklasse Bezeichnung
[:print:]
dass sollte mit druckbaren Zeichen, und[:cntrl:]
für steuerzeichen. Beachten Sie, dass diese match-codes in der gesamten ASCII-Tabelle, so dass Sie möglicherweise nicht passend für andere Codierungen.Gelingt das nicht, wird der Ausdruck
[\x00-\x1f]
übereinstimmen wird durch das ASCII steuerzeichen, obwohl wieder, diese könnten gedruckt werden, die in anderen Kodierungen.InformationsquelleAutor der Antwort zombat
Wenn Ihr regex Geschmack unterstützt Unicode-Eigenschaftenist dies wahrscheinlich die beste der beste Weg:
Entspricht jedem Zeichen, das nicht ein steuerzeichen, ob es in ASCII --
[\x00-\x1F\x7F]
-- oder Latin1 --[\x80-\x9F]
(auch bekannt als C1-steuerzeichen).Das problem mit POSIX-Klassen, wie
[:print:]
oder\p{Print}
ist, dass Sie passen verschiedene Dinge, je nach regex Geschmack und vielleicht auch die locale-Einstellungen der zugrunde liegenden Plattform. In Java sind Sie strikt im ASCII-orientiert. Das bedeutet, dass\p{Print}
findet nur den ASCII-druckbare Zeichen --[\x20-\x7E]
- während\P{Cntrl}
(beachten Sie die Hauptstadt 'P') entspricht, alles, was nicht eine ASCII-steuerzeichen --[^\x00-\x1F\x7F]
. Das heißt, es entspricht jedem beliebigen ASCII-Zeichen, die nicht ein steuerzeichen, oder alle nicht-ASCII-Zeichen--einschließlich C1 steuerzeichen.InformationsquelleAutor der Antwort Alan Moore
Sehr spät zur party, aber dieser regexp klappt:
/[ -~]/
.Wie? Es passt auf alle Zeichen im Bereich von Raum (ASCII
DEC
32) tilde (ASCIIDEC
126), das ist der Bereich, der alle druckbaren Zeichen.Wenn Sie wollen, um Streifen nicht-ASCII-Zeichen, könnten Sie so etwas wie:
HINWEIS: dies ist nicht gültig
.net
code, sondern ein Beispiel von regexp-Nutzung für diejenigen, die stolpern über Suchmaschinen später.InformationsquelleAutor der Antwort Arman H
Es hängt davon ab, Wild auf das, was regex-Paket Sie verwenden. Das ist eine dieser Situationen, über die einige wag, sagte, dass das tolle an standards ist, es gibt so viele zur Auswahl.
Wenn Sie geschehen, werden mit C, der
isprint(3)
Funktion/makro ist dein Freund.InformationsquelleAutor der Antwort Norman Ramsey
In Java, die
\p{Print}
option gibt an,die druckbaren Zeichen Klasse.InformationsquelleAutor der Antwort hashable
Hinzufügen auf @Alan-Moore,
\P{Cc}
tatsächlich als Beispiel fürNegative Unicode Category or Unicode Block
(ref: Zeichenklassen in Regulären Ausdrücken).\P{name}
entspricht jedem Zeichen, gehört nicht zu einer Allgemeinen Unicode-Kategorie oder ein benannter block. Finden Sie unter dem genannten link für weitere Beispiele benannte Blöcke unterstützt .NetInformationsquelleAutor der Antwort Adarsha