*, ?, +
Alle Zeichen bedeuten, dass sie mit diesem Zeichen übereinstimmen. Welcher Charakter bedeutet "passt nicht dazu"? Beispiele würden helfen.
*, ?, +
Alle Zeichen bedeuten, dass sie mit diesem Zeichen übereinstimmen. Welcher Charakter bedeutet "passt nicht dazu"? Beispiele würden helfen.
Antworten:
Sie können negierte Zeichenklassen verwenden, um bestimmte Zeichen auszuschließen: Sie [^abcde]
stimmen beispielsweise mit allen Zeichen außer a, b, c, d, e überein.
Anstatt alle Zeichen wörtlich anzugeben, können Sie Kurzzeichen in Zeichenklassen verwenden: [\w]
(Kleinbuchstaben) stimmen mit jedem "Wortzeichen" (Buchstaben, Zahlen und Unterstrich) [\W]
überein , (Großbuchstaben) stimmen mit allen anderen als Wortzeichen überein; In ähnlicher Weise [\d]
werden die 0-9-Stellen [\D]
übereinstimmen, während alles andere als die 0-9-Stellen übereinstimmen, und so weiter.
Wenn Sie PHP verwenden, können Sie sich die Dokumentation zu Regex-Zeichenklassen ansehen .
Es gibt zwei Möglichkeiten, um "Nicht übereinstimmen" zu sagen: Zeichenbereiche und negativer Lookahead / Lookbehind mit einer Breite von Null.
Die ehemalige: nicht übereinstimmen a
, b
, c
oder 0
:[^a-c0]
Letzteres: Entspricht einer beliebigen dreistelligen Zeichenfolge mit Ausnahme von foo
und bar
:
(?!foo|bar).{3}
oder
.{3}(?<!foo|bar)
Auch eine Korrektur für Sie: *
, ?
und +
nicht wirklich alles passen. Sie sind Wiederholungsoperatoren und folgen immer einem übereinstimmenden Operator. So a+
eine oder mehrere der Mittel entsprechen a
, [a-c0]+
Mittel entsprechen einem oder mehreren der a
, b
, c
oder 0
, während [^a-c0]+
würde man erreichen oder mehr von irgendetwas , das war nicht a
, b
, c
oder 0
.
^((?!foo).)+$
Passen Sie
^
Wird am Anfang eines Zeichenbereichs oder bei negativen Lookahead / Lookbehind-Behauptungen verwendet.
>>> re.match('[^f]', 'foo')
>>> re.match('[^f]', 'bar')
<_sre.SRE_Match object at 0x7f8b102ad6b0>
>>> re.match('(?!foo)...', 'foo')
>>> re.match('(?!foo)...', 'bar')
<_sre.SRE_Match object at 0x7f8b0fe70780>
?!
in den letzten 2 Beispielen verwenden oder können Sie nur !
für sich selbst verwenden? Was macht ?
da?
?
um zu erkennen, dass es sich um eine Erweiterung handelt. Andere Regex-Engines haben möglicherweise ihre eigenen Regeln.