Regex: Match-html-tag nur, wenn es mit einer bestimmten Klassen-id

Match ein html-tag mit Hilfe von perl regex in php.

Wollen den tag zu entsprechen, wenn es enthält "class= "details" irgendwo in der öffnen-tag.

Wollen match <table border="0" class="details"> nicht <table border="0">

Schrieb dieses, um es anzupassen:

'#<table(.+?)class="details"(.+?)>#is'

Den <table(.+?) schafft ein problem, da es mit den ersten table-tag es findet nur stoppen das Spiel, wenn es findet class="details" egal, wie weit unten der code, auf den es Auftritt.

Ich denke, diese Logik wäre fix mein problem:

"Match <table aber nur, wenn es enthält class="details" vor der nächsten >"

Wie kann ich dies Schreibe?

  • Haben Sie versucht, mit Hilfe eines HTML-parsers. Auch, stackoverflow.com/questions/1732348/...
  • Chris, ich brauchen, um zu erreichen, zwei Dinge: 1. lernen von regulären Ausdrücken 2. tatsächlich erreichen die oben angegebene Aufgabe nach genug lernen. Reguläre Ausdrücke sind unzureichend für diese Aufgabe. Ihre Antwort erfüllt mein zweites Ziel. Viel Dank
  • HTML und regexes ist wie Cäsium und Wasser... Sie warten für eine Katastrophe, wenn Sie beides vermischen. Sie sind nicht nur unzureichend für diese Aufgabe... Es ist geradezu gefährlich, verwenden Sie für diese Aufgabe. Betrachten Sie einen anderen Weg, um zu lernen, reguläre Ausdrücke, da dies nicht einem gültigen use-case, für Sie sowieso.
InformationsquelleAutor JMC | 2010-07-30
Schreibe einen Kommentar