2017-06-23 3 views
0

Ich habe eine Zeichenfolge, die ich zuordnen muss und extrahieren Sie einen CSS-Klassennamen daraus. Die Zeichenfolge:Regulärer Ausdruck: extrahiere CSS-Klasse aus String mit mehreren Klassen

.c.-my-text-overlay-second 

die Klasse I müssen hat Übereinstimmen text-overlay innerhalb oder am Ende des Klassennamen enthält. Also in diesem Fall, was ich extrahieren möchte, ist .-my-text-overlay-second.

Ich habe mehrere Dinge ausprobiert, aber ich entweder die .c erhalten:

(.*\..*?text-overlay.*) 

oder erhalte ich nur text-overlay:

.*(\..*?media-overlay-active) 

Was sollte den richtigen Ausdruck?

+0

Vielleicht binden Sie es auf diese Weise zu tun [ '\ [\ w -] * Text-Overlay [. \ w-] * '] (https://regex101.com/r/O46hA0/2) – revo

+1

@revo das ist richtig. Tolle Regex-Arbeit! Der Link ist nützlich, ich werde verstehen können, wie zum Teufel es funktioniert :) – Krystian

Antwort

1

Sie sollten keinen gierigen Punkt .* in Ihrem Regulären Ausdruck verwenden, da alles von Anfang bis zum nächsten Muster (falls vorhanden) übereinstimmt. Das ist der Grund für die Übereinstimmung der gesamten Eingabezeichenfolge, während text-overlay darin existiert.

Ihre regex sollte mit einem Punkt beginnen und den Rest der Klasse Namensregeln entsprechen:

\.[\w-]*text-overlay[\w-]*