Thread RegEx: großes, umfangreiches Problem (18 answers)
Opened by pktm at 2003-08-17 18:54

kabel
 2003-08-18 14:53
#65090 #65090
User since
2003-08-04
704 Artikel
BenutzerIn
[default_avatar]
R E A D M O R E P L E A S E :)

hier ist die grammatik. have fun.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
my $grammar = q~
titel: '<h1>' /.*(?=<\/h1>)/ '</h1>' { $return = $item[2]; }
toc_eintrag: '<li>' /[^\n]*/ { $return = $item[2] || ""; chomp $return; }
toc: toc_eintrag(s?)
header: titel toc { $return = {TITEL => $item[1], TOC => $item[2]}; }
link: /<a[ \w="\d]*?>/i /(.|\s)*?(?=<\/a>)/i /<\/a>/i { $return = $item[2]; }
start_h2: /<H2>/i
end_h2: /<\/H2>/i
eintrag_separator: /<hr \/>/i
eintrag: eintrag_separator link(?) start_h2 /.*(?=<\/H2>)/i end_h2 /(.|\s)*?(?=<hr \/>)/ {
$return = { EINTRAG_TITEL => $item[4], EINTRAG_TEXT => $item[6] || "", LINK => $item[2] || ""};
chomp $return->{EINTRAG_TEXT};
}
eintraege: eintrag(s?) eintrag_separator { $return = $item[1]; }
datei: header eintraege { $return = [$item[1], $item[2]]; }
~;

falls jemand ne erklärung will => frage!

sie kann die zwei beispiele parsen (ohne das vor- bzw. nachgeplänkel, also vom <h1>-tag bis zum letzten <hr />).
die aufgebaute struktur sieht bei der eingabe
Quote
<h1>Cookies</h1>

<li><a href="#intro">Was sind Cookies?</a>
<li><a href="#kekse_perl">Cookies mit perl</a>
<li><a href="#kekse_setzen">Cookies setzen (perl-script)</a>
<li><a href="#cookies_ohne_modul">Cookies ohne CGI.pm</a>

<hr />
<a name="intro">& </a>
<h2>Was sind cookies?</h2>
<p>Cookies sind kleine Textdateien, die auf Ihrem Computer gespeichert werden.
<hr />
<a name="kekse_perl">& </a>
<h2>Cookies mit perl</h2>
<h3>Einleitung</h3>
<hr />
<a name="kekse_setzen">& </a>
<h2>Cookies setzen (perl-script)</h2>
<pre> blubber di bla
<hr />
<a name="cookies_ohne_modul">& </a>
<h2>Cookies ohne CGI.pm</h2>
<H3>Cookies einlesen</H3>
<hr />

so aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
kabel@linux:~/progs/perl/pktm> perl -w pktm.pl
$VAR1 = [
{
'TOC' => [
'<a href="#intro">Was sind Cookies?</a>',
'<a href="#kekse_perl">Cookies mit perl</a>',
'<a href="#kekse_setzen">Cookies setzen (perl-script)</a>',
'<a href="#cookies_ohne_modul">Cookies ohne CGI.pm</a>'
],
'TITEL' => 'Cookies'
},
[
{
'EINTRAG_TITEL' => 'Was sind cookies?',
'LINK' => [
'& '
],
'EINTRAG_TEXT' => '<p>Cookies sind kleine Textdateien, die auf Ihrem Computer gespeichert werden.'
},
{
'EINTRAG_TITEL' => 'Cookies mit perl',
'LINK' => [
'& '
],
'EINTRAG_TEXT' => '<h3>Einleitung</h3>'
},
{
'EINTRAG_TITEL' => 'Cookies setzen (perl-script)',
'LINK' => [
'& '
],
'EINTRAG_TEXT' => '<pre> blubber di bla'
},
{
'EINTRAG_TITEL' => 'Cookies ohne CGI.pm',
'LINK' => [
'& '
],
'EINTRAG_TEXT' => '<H3>Cookies einlesen</H3>'
}
]
];
kabel@linux:~/progs/perl/pktm>


HTH :unclesam:
-- stefan

View full thread RegEx: großes, umfangreiches Problem