2016-04-26 4 views
-1

Ich habe eine HTML-String:Wie vermeidet man zu viel Übereinstimmung?

<li>bmasdas asmdasmdamsd admasmams asmdamsdma asmdamsdasm </li> 
<li> asdmams sdasdasmdamsdma asdmsasdaddamsdasm </li> 
<li> dsadasdasdas TARGET dasdasdsa</li> 

Ich versuche <li> Tags zu erfassen, die das Wort "TARGET" mit dieser Regex enthalten:

<li.*?TARGET.*?\/li> 

Während dies die Linie tut erfassen ich wollte, Das Spiel beginnt bei der ersten <li>. Wie kann ich nur die Tags erfassen, die ich möchte?

+0

leid für mein schlechtes understanding..but können Sie ein bisschen aufwendiger sein – rock321987

+0

** Pease diese kopieren: **

  • bmasdas asmdasmdamsd admasmams asmdamsdma asmdamsdasm
  • asdmams sdasdasmdamsdma asdmsasdaddamsdasm
  • dsadasdasdas TARGET dasdasdsa
  • ** und benutze mein regexp , Sie sehen regexp passt ganzen Text, aber ich möchte nur die letzte Zeichenfolge (Zeile) ** – mssqlw

    +0

    Bitte umformulieren Sie Ihre Frage: "t funktioniert gut, wenn Sie erwägen regexp stoppt mit dem letzten '<\li>, geht jedoch nicht voran Ich versuche, einen Weg zu finden, es würde nicht gehen und alle anderen Zeilen mit <'li> vor TARGET lesen. " – sweaver2112

    Antwort

    1

    Sie scheinen nicht zu verstehen, dass . mit einem beliebigen Zeichen übereinstimmt, einschließlich derjenigen in <li. Wenn Sie dies ändern, ist es möglich, einfaches HTML zu analysieren.

    Try this: <li[^<]*TARGET[^>]*\/li>

    Der Unterschied ist, dass ich negierte char Klassen verwendet, wie [^>] es, um sicherzustellen, nicht die Tags fangen. Beachten Sie, dass Regex nicht das zu verwendende Werkzeug ist, wenn verschachtelte Tags vorhanden sind.

    +0

    Masterpiece erhalten! Vielen Dank. – mssqlw

    Verwandte Themen