I wie das folgende vereinfachte Beispiel eine RegExp haben zu finden:javascript regexp Mit dem ersten und dem längsten Übereinstimmung
var exp = /he|hell/;
Als ich es an einer Schnur läuft es mir das erste Spiel, fx geben:
var str = "hello world";
var match = exp.exec(str);
// match contains ["he"];
Ich möchte die erste und längste mögliche Übereinstimmung, und damit meine ich sortiert nach Index, dann Länge.
Da der Ausdruck aus einem Array von RegExp's kombiniert wird, suche ich nach einer Möglichkeit, die längste Übereinstimmung zu finden, ohne den regulären Ausdruck neu schreiben zu müssen.
Ist das überhaupt möglich?
Wenn nicht, suche ich nach einer Möglichkeit, den Ausdruck einfach zu analysieren und in der richtigen Reihenfolge anzuordnen. Aber ich kann nicht herausfinden, wie da die Ausdrücke könnte viel komplexer sein, fx:
var exp = /h..|hel*/
Ihr zweites Beispiel wäre viel interessanter, wenn es zum Beispiel wäre: '/ h .... | hel * /' –
Es sieht genauso aus. Ich wollte eigentlich illustrieren, dass die längste Regexp nicht unbedingt die längste Übereinstimmung ist. Mein einfacher Ausdruck sollte etwas wie '/ h. *? | Hallo /' sein. Aber ich denke, die Benutzer dieser Seite wissen sowieso, was ich meine. Zumindest hast du das gemacht :-) –
Wenn Lookback-Assertionen mit variabler Breite in Javascript möglich sind (wie sie zum Beispiel in den Regex-Varianten .NET und JGsoft vorkommen), könntest du es auf diese Weise erreichen: 'exp = /.*(?<=h .. | hel *)/'. Aber bis jetzt wird dieses Feature in JS nicht erwartet. –