Ich habe auf einen Eckfall getroffen - oder es ist so einfach, niemand hat jemals gefragt!RegEx entspricht dem ersten Vorkommen eines Wortes, aus einer Liste der gewünschten Wörter
Ich habe eine Liste der gewünschten Wörter, die ich in einem Block des Textes übereinstimmen möchte. Allerdings möchte ich nur das erste Vorkommen von jeweils von diesen übereinstimmen, (bearbeiten: , wenn sie im Zielblock vorhanden sind).
Wenn mein Textblock lautet:
glass shoes door doors window door glasses. glass's glass window windows glasses
würde ich passen mag:
glass door window
ich lerne, wie man es verengen, wie ich versuche, die Gruppierungen zu verstehen .. Dies ist:
/(?: [\ S] | ^) Tür | Glas | Fenster (? = [\ S] | $)/g;
gibt mir "Geist" Vorkommen:
glass, door, door,window, door,glass,glass,glass,window,glass
als Satz meine gewünschten Wörter in Klammern Wrapping (Gruppe?) Wie folgt aus:
/(?:[\s]|^)(door|glass|window)(?=[\s]|$)/g;
gibt mir nur jede tatsächliche Auftreten:
glass, door, window, door, glass, window
was ist bisher die beste (schmalste) die ich bekommen kann.
Ich habe erwartet, dass:
/(door|glass|window)/
ohne/g globalen Flag würde ich das erste Vorkommen von „meinem“ OR „gewünschten“ OR „Worten“, aber es stoppt beim ersten Fund, "Glas".
So die Frage neu zu formulieren, (bearbeitet) Ich versuche, die erste Instanz von jeder dieser Worte (erste Tür, und das erste Fenster und erste Glas), wenn sie zeigen, bis zu finden überhaupt, umhüllt von (?: [\ s] | ^) und (? = [\ s] | $) in einem Textblock.
Vielen Dank!
Verwenden 3 verschiedene reguläre Ausdrücke für jede Suche. Es wird der "lesbarste" Ansatz sein. [This] (https://regex101.com/r/UfIbeo/1) ist ungehörig und macht wenig Sinn. –
Wird es versuchen. Eine Einschränkung ist, dass ich ".match" nur einmal aufrufen kann. –