Hi Tim,
Ich habe auch schon einen ersten Ansatz eines Suchmusters:
suchmuster = "/<tr>.*test2.html.*</tr>/i";
Allerdings bekomme ich dabei immer einen viel zu großen Abschnitt:
<tr><td><a href="test.html">test</a></td></tr>
<tr><td bgcolor="#ffffff"><a href="test2.html?p=1">test</a></td></tr>
<tr><td bgcolor="#dddddd"><a style="color:red;" href="test2.html?p=2">test</a></td></tr>
>
> Also quasi das allererste "<tr>" bis zum allerletzten "</tr>".
Den Hinweis auf die „Gefräßigkeit“ von RegEx hast du ja schon bekommen - standardmäßig passt ein .\* immer auf so viel wie möglich, dieses Verhalten lässt sich abschalten, indem du hinter das /i noch ein U schreibst.
Ich würde den RegEx an sich aber auch noch etwas verbessern - zur Zeit würde er auch passen, wenn test2.html da drin stehen hast, auch wenn es nicht verlinkt ist.
Mein Ansatz:
/<tr>.\*<a[^>]\*href="test2\.html"[^>]\*>.\*<\/tr>/iU
Das bedeutet: Zuerst muss ein <tr> kommen, dann kann etwas beliebiges kommen, dann muss <a href="test2.html"> kommen, es darf aber auch <a class="link" href="test2.html"> oder <a href="test2.html" class="link"> sein, dann darf wieder beliebiger Text kommen und am Ende muss noch mal ein </tr> sein.
Dadurch würde also nun ein `<tr><td>Das test2.html ist kein Link</td></tr>`{:.language-html} nicht gefunden.
Je nach dem in welcher Programmiersprache du arbeitest (was du gepostest hattest, sah nach PHP aus) musst du den RegEx dann mit einer entsprechenden Funktion verarbeiten - in PHP müsstest du [preg_match_all()](http://php.net/preg_match_all) verwenden, um an alle Funde ranzukommen, dass könnte z.B. so aussehen:
~~~php
$pattern = '/<tr>.*<a[^>]*href="test2\.html"[^>]*>.*<\/tr>/iU';
$subject = 'zu durchsuchenden html code';
$matches = array(); // Array für die Funde
$success = preg_match_all($pattern, $subject, $matches);
if($success === false) {
echo "Es ist ein Fehler aufgetreten";
}
elseif($success > 0) {
echo "Es wurden $success Stellen gefunden:\n";
print_r($matches);
}
else {
echo "Es wurden keine Stellen gefunden.";
}
MfG, Dennis.
--
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Die FlatBox 0.3.1 mit Dokumentation ist da!
Im Schatten - www.schaumerlmal.de
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Die FlatBox 0.3.1 mit Dokumentation ist da!
Im Schatten - www.schaumerlmal.de