Dank der Hilfe bei meiner vorherigen Hausaufgabe Regex to match tags like <A>, <BB>, <CCC> but not <ABC>
, aber jetzt habe ich noch eine Hausaufgabenfrage.
Ich muss Tags wie <LOL>
, <LOLOLOL>
(3 Großbuchstaben, mit wiederholbaren letzten zwei Buchstaben), aber nicht <lol>
(muss Großbuchstaben sein) anpassen.
Mit der Technik aus den vorherigen Hausaufgaben probierte ich <[A-Z]([A-Z][A-Z])*>
. Dies funktioniert, außer es gibt einen zusätzlichen Haken: der sich wiederholende Teil kann in Groß- und Kleinbuchstaben sein!
Also muss ich auch <LOLolol>
, <LOLOLOlol>
finden, weil es 3 Großbuchstaben sind, mit wiederholbaren letzten zwei Buchstaben in Groß- und Kleinschreibung. Ich weiß, dass man mit /i
ein Muster ohne Berücksichtigung der Groß- und Kleinschreibung machen kann und dass ich <LOLolol>
mit der Regex übereinstimme, aber auch mit <lololol>
übereinstimmt, weil auch die ersten drei Buchstaben überprüft werden Groß- / Kleinschreibung nicht beachten.
Wie mache ich das? Wie kann ich die ersten drei Buchstaben in der Groß- und Kleinschreibung sensibel prüfen, und dann die übrigen Buchstaben fallunabhängig? Ist das mit Regex möglich?
Ja! Sie können dies in einigen Geschmacksrichtungen tun, indem Sie den sogenannten eingebetteten Modifikator verwenden. Dadurch wird der Modifikator in das Muster eingefügt und Sie können im Wesentlichen auswählen, auf welche Teile des Musters die Modifikatoren angewendet werden.
Der eingebettete Modifikator für die Groß- und Kleinschreibung ist (?i)
. In diesem Fall lautet das Muster also:
/regex/i
kannst du auch /(?i)regex/
/first(?i)second(?-i)third/
/first(?i:second)third/
Tags und Links regex case-sensitive case-insensitive