2017-07-12 5 views
2

ich wählen möchten alle option1, option2 etc .. nach einer fromHere Zeichenfolge übereinstimmen, aber ich bin endet nur das letzte Vorkommen der Auswahl bis (option4), wie sie mehrmals ein Wort nach einem bestimmten Ausgangspunkt (Wort) mit regex

regex101

Und hier ist das Beispiel

Regex: /(?=fromHere(.+((option\d))))/g

Text:

Ok ignoring this whole line option1 ignore 


    fromHere I want to match all option1 ignore option2 ignore option3 xxxx 
option4 but got only the last one (4) 

Ich konnte keine Lösung finden.

Antwort

2

können Sie String.prototype.split() mit RegExp/fromHere verwenden Zeichenfolge zu entfernen "fromHere" aus resultierende Array zu spalten, Array.prototype.pop() Index 1 des Arrays zu erhalten, String.prototype.match() mit RegExp/option\d/g"optionN" in Zeichenfolge übereinstimmen.

let str = ` Ok ignoring this whole line option1 ignore 
 

 

 
    fromHere I want to match all option1 ignore option2 ignore option3 xxxx 
 
option4 but got only the last one (4)`; 
 

 
let res = str.split(/fromHere/).pop().match(/option\d/g); 
 

 
console.log(res);

+0

Thanks @ guest271314, aber mein Ziel war es, den Text zu markieren, während der Benutzer die Eingabe ist, so kann ich nicht die Zeichenfolge trimmen. Was ich hier interessant fand, ist, wenn ich den Lookahead Operator ausschließe, werden alle Optionen (x) verglichen. Es ist kein Grep-Verhalten, sondern alles andere. – JLCDev

+0

@JLCDev Sie können den Ansatz bei Antwort verwenden, um die Übereinstimmungen hervorzuheben. Verknüpfen Sie einfach 'res [0]' mit 'res [1]' verbunden mit '" fromHere "'. Beachten Sie, dass "mein Ziel darin bestand, den Text hervorzuheben, während der Benutzer tippt" erscheint nicht bei der ursprünglichen Frage – guest271314

Verwandte Themen