560 Stimmen

Regex: Groß- und Kleinschreibung ignorieren

Wie kann ich erreichen, dass die folgende Regex die Groß- und Kleinschreibung ignoriert? Es sollte alle richtigen Zeichen übereinstimmen, aber ignorieren, ob sie Klein- oder Großbuchstaben sind.

G[a-b].*

695voto

mgibsonbr Punkte 21335

Angenommen, Sie wollen die ganz Regex die Groß- und Kleinschreibung ignoriert, sollten Sie nach dem i Flagge . Nahezu alle Regex-Engines unterstützen sie:

/G[a-b].*/i

string.match("G[a-b].*", "i")

Schauen Sie in der Dokumentation zu Ihrer Sprache/Plattform/Ihrem Werkzeug nach, wie die Anpassungsmodi angegeben werden.

Wenn Sie nur Teil der Regex die Groß- und Kleinschreibung nicht berücksichtigt (wie in meiner ursprünglichen Antwort angenommen), dann haben Sie zwei Möglichkeiten:

  1. Verwenden Sie die (?i) und [optional] (?-i) Modus-Modifikatoren:

    (?i)G[a-b](?-i).*
  2. Alle Varianten (d.h. Klein- und Großbuchstaben) in die Regex aufnehmen - nützlich, wenn Modusmodifikatoren nicht unterstützt werden:

    [gG][a-bA-B].*

Ein letzter Hinweis: Wenn Sie neben ASCII auch mit Unicode-Zeichen zu tun haben, sollten Sie überprüfen, ob Ihre Regex-Engine diese auch unterstützt.

297voto

elrado Punkte 4451

Hängt von der Umsetzung ab aber ich würde verwenden

(?i)G[a-b].

VARIATIONEN:

(?i) case-insensitive mode ON    
(?-i) case-insensitive mode OFF

Moderne Regex-Varianten erlauben es Ihnen, Modifikatoren nur auf einen Teil des regulären Ausdrucks anzuwenden. Wenn Sie den Modifikator (?im) in der Mitte des Regex einfügen, gilt der Modifikator nur für den Teil des Regex, der sich rechts vom Modifikator befindet. Mit diesen Flavors können Sie Modifikatoren ausschalten, indem Sie ihnen ein Minuszeichen (?-i) voranstellen.

Die Beschreibung stammt von dieser Seite: https://www.regular-expressions.info/modifiers.html

103voto

Ravinath Punkte 1410

Regulärer Ausdruck für die Validierung von 'abc' unter Beachtung der Groß- und Kleinschreibung

(?i)(abc)

59voto

chooban Punkte 8576

En i wird normalerweise zur Unterscheidung von Groß- und Kleinschreibung verwendet. Sie geben hier keine Sprache an, aber es wird wahrscheinlich etwas sein wie /G[ab].*/i o /(?i)G[ab].*/ .

18voto

Frankenstein Punkte 555

Nur der Vollständigkeit halber wollte ich die Lösung für reguläre Ausdrücke in C++ mit Unicode hinzufügen:

std::tr1::wregex pattern(szPattern, std::tr1::regex_constants::icase);

if (std::tr1::regex_match(szString, pattern))
{
...
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X