Ist der reguläre Ausdruck [a-Z] gilt und wenn ja, dann ist es das gleiche wie [a-zA-Z]?
Ist der reguläre Ausdruck [a-Z] gilt und wenn ja, dann ist es das gleiche wie [a-zA-Z]?
Bitte beachten Sie, dass [a-Z] die a
ist klein-und die Z-Großbuchstaben ist.
Edit:
Erhielt ich einige Antworten, die Angabe, dass, während [a-Z] ist nicht gültig, dann [A-z] gültig ist (aber nicht das gleiche wie [a-zA-Z]) und das ist wirklich das, was ich suchte.
Da wollte ich wissen in der Regel, wenn es möglich ist, ersetzen Sie [a-zA-Z] mit einem kompakteren version.
Dank für alle, die dazu beigetragen, die Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein,
a
(97) höher ist alsZ
(90).[a-Z]
ist kein gültiges Zeichen-Klasse. Allerdings[A-z]
wäre nicht gleichwertig, aber aus einem anderen Grund. Es wäre für alle die Buchstaben, sondern auch die Zeichen zwischen groß-und Kleinbuchstaben:[\]^_`
.[a-Z]
ist ungültig, weilZ
kommt vora
[a-Z]
und[A-z]
sind ungültig. Nicht downvote mich für tun extra credit. 🙂/[a-z]/i
oder(?i)[a-z]
)Ich bin mir nicht sicher über andere Sprachen' - Implementierungen, aber in PHP können Sie tun
und es wird groß-und Kleinschreibung. Es ist wahrscheinlich etwas ähnliches wie für andere Sprachen.
Du nicht angeben, in welcher Sprache, aber im Allgemeinen
[a-Z]
nicht einem gültigen Bereich, da in ASCII die Kleinbuchstaben alphabetische Zeichen kommen nach der oberen-Fall diejenigen.[A-z]
könnte ein zulässiger Bereich (mit Angabe aller groß - und kleingeschriebenen "alphas" sowie das Satzzeichen, das zwischenZ
unda
), aber könnte es nicht sein, je nach Ihren besonderen Einsatz. Diei
Flagge Hinzugefügt werden können, um das regex zu machen, der groß-und Kleinschreibung; überprüfen Sie Ihren besonderen Einsatz für Anweisungen, wie Sie angeben, dass die flag.Können Sie immer versuchen Sie es:
Perl sagt
[A-z]
es würde keine Fehlermeldung, aber es würde nicht funktionieren, richtig.Wenn es gültig ist, es nicht tun, was Sie erwarten.
Den Charakter-code von Z ist, der niedriger als der Charakter-code von a, so dass, wenn die codes vertauscht werden, dass der Bereich
[Z-a]
es wird die gleiche sein, wie[Z\[\\\]^_`a]
, d.h. es wird auch die ZeichenZ
unda
, und die Zeichen zwischen den.Wenn Sie
[A-z]
um alle groß-und Kleinbuchstaben, das ist noch nicht das gleiche wie[A-Za-z]
, es ist das gleiche wie[A-Z\[\\\]^_`a-z]
.Nein, es ist nicht gültig, wahrscheinlich, weil die ASCII-Werte sind nicht in Folge von z bis A.
Ich habe gerade gestürzt, über das in einem script (nicht meine eigenen).
Scheint es, dass grep, awk, sed akzeptieren
[a-Z]
basierend auf Ihrem Gebietsschema (D. H. LANG oder LC_CTYPE Umgebungsvariable). In POSIX,[a-Z]
ist nicht gestattet, diese tools, aber in manchen anderen Gebietsschemas (z.B. de_de.utf8) funktioniert es, und ist das gleiche wie[a-zA-Z]
.Ja, habe ich überprüft, es passt nicht jeder
_^[]`
.Gegeben, dass dies durchaus einige Zeit, um zu Debuggen, habe ich dringend jemanden davon abhalten, jemals mit
[a-Z]
in einem regex.