Thread regular expression matcht nicht (3 answers)
Opened by Gast at 2006-01-26 16:23

Gast Gast
 2006-01-26 16:23
#62324 #62324
hi leute,
ich habe ein problem mit einer regular expression. folgender quellcode einer html seite liegt vor:

<A TITLE="species" HREF="/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=321023&lvl=10&lin=f&keep=1&srchmode=1&unlock&filter=genome_filter"><STRONG>Aeromonas phage 31</STRONG></A><LI TYPE=square>
<A TITLE="species" HREF="/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=230158&lvl=10&lin=f&keep=1&srchmode=1&unlock&filter=genome_filter"><STRONG>Bacteriophage Aaphi23</STRONG></A><LI TYPE=square>
<A TITLE="species" HREF="/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=12402&lvl=10&lin=f&keep=1&srchmode=1&unlock&filter=genome_filter"><STRONG>Bacteriophage EJ-1</STRONG></A><LI TYPE=square>
<A TITLE="species" HREF="/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=292029&lvl=10&lin=f&keep=1&srchmode=1&unlock&filter=genome_filter"><STRONG>Bacteriophage G1</STRONG></A><LI TYPE=square>
<A TITLE="species" HREF="/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=238854&lvl=10&lin=f&keep=1&srchmode=1&unlock&filter=genome_filter"><STRONG>Bacteriophage S-PM2</STRONG></A><LI TYPE=square>
<A TITLE="species" HREF="/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=244310&lvl=10&lin=f&keep=1&srchmode=1&unlock&filter=genome_filter"><STRONG>Burkholderia cenocepacia phage Bcep1</STRONG></A><LI TYPE=square>
<A TITLE="species" HREF="/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=279530&lvl=10&lin=f&keep=1&srchmode=1&unlock&filter=genome_filter"><STRONG>Burkholderia cenocepacia phage BcepB1A</STRONG></A><LI TYPE=square>
<A TITLE="species" HREF="/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=260373&lvl=10&lin=f&keep=1&srchmode=1&unlock&filter=genome_filter"><STRONG>Burkholderia cepacia phage Bcep43</STRONG></A><LI TYPE=square>
<A TITLE="species" HREF="/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=209052&lvl=10&lin=f&keep=1&srchmode=1&unlock&filter=genome_filter"><STRONG>Burkholderia cepacia phage Bcep781</STRONG></A><LI TYPE=square>
<A TITLE="species" HREF="/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=330395&lvl=10&lin=f&keep=1&srchmode=1&unlock&filter=genome_filter"><STRONG>Listeria bacteriophage P100</STRONG></A><LI TYPE=square>
<A TITLE="species" HREF="/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=205877&lvl=10&lin=f&keep=1&srchmode=1&unlock&filter=genome_filter"><STRONG>Mycobacterium phage Bxz1</STRONG></A>
Code: (dl )
1
2
3
4
5
6
Die Seite folgt also einem Muster nach: <A TITLE="..." HREF="..." <STRONG>...</STRONG></A>...

Ich will einen Abschnitt finden, der eine bestimmte ID hat, dessen Nachfolger, aber auch dessen Vorgänger. Mit dem Nachfolger habe ich kein Problem, wohl aber mit dem Vorgänger.

Ich habe folgende Regular Expression erstellt:
<A TITLE=\"(.+?)\" HREF=\".+?</STRONG></A>.+?<A TITLE=\"(.+?)\" HREF=\".+?&id=12345.+?</STRONG></A>.+?<A TITLE=\"(.+?)\" HREF=\".+?</STRONG></A>


Das Problem daran ist, dass alles vor dem Abschnitt mit der ID expandierd wird und in die Regular Expression hineinfällt. Es muss irgendwie an dem .+ liegen, obwohl ich ein ? angefügt habe, damit es nicht "greedy" reagiert.

Der Schluss funktioniert, also der Abschnitt mit der ID matcht richtig, und der Nachfolger "expandiert" im Gegensatz zum Vorgänger nicht.

Wer kann mir bitte helfen?

lG Johnny

View full thread regular expression matcht nicht