Frage

Ich muss aus den folgenden Codezeilen extrahieren

<label for="<%=foobar.bar %>">Password:</label>

<label for="foobar">Password:</label>
foobar zu extrahieren:

Ich brauche (?<=for=")[^"]+(?=(")) zu extrahieren, kann ich diese verwenden

<%=foobar.bar %>

und

foobar

, aber ich will nicht <%= oder .bar und wenn ich versuche, (?<=for=")[^"]+(?=(")) | (?<=for="<%=)[^"]+(?=(")) zu schaffen es funktioniert nicht becuase das Label, das <%= enthalten beide Bedingungen erfüllt, und ich glaube nicht, dass Sie XOR verwenden kann? Ist das alles, was jemand kann mir helfen mit?

Merci:)

War es hilfreich?

Lösung

Ich glaube, dass es besser ist, nicht uber-Regexes zu erstellen. Tun Sie Ihre Aufgabe in mehreren Schritten:

  1. Extract <%=foobar.bar %> oder foobar mit Ihrem regex (?<=for=")[^"]+(?=("))
  2. Überprüfen Sie, ob Ergebnis regex wie <%=([\w]+)\.bar\s*%> entspricht.
  3. Ist dies der Fall $1 Gruppe von Spiel verwenden, sonst Ergebnis von Schritt 2 verwenden.
  4. Sie erhalten foobar

Andere Tipps

Sie können versuchen, diese:

(?<for="(<%=)?)[^" ]*(?=( %>)?")

Unter der Annahme, dass das, was Sie nie Leerzeichen enthält erfassen möchten. Ansonsten können Sie versuchen:

(?<for="(<%=)?)[^"]*?(?=( %>)?")

Um eine nicht gierige Form [^"]* verwenden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top