Schrift
[thread]7291[/thread]

regex - Probleme!



<< |< 1 2 >| >> 20 Einträge, 2 Seiten
Weman
 2005-09-19 14:54
#58176 #58176
User since
2005-08-10
17 Artikel
BenutzerIn
[default_avatar]
Hallo alle,

ich hab noch nie mit regex gearbeitet und benötige bitte Eure Hilfe!

Ich möchte immer einen Satz bis zu einem bestimmten Wort ausgeben! Oder er soll erst ab einem Wort bis wieder zu einem bestimmten Wort auslesen!

Wie mache ich das mit regex? Kann mir bitte wer ein Beispiel geben?

Vielen lieben Dank!
vayu
 2005-09-19 15:03
#58177 #58177
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Bis zu einem Wort ausgeben
Code: (dl )
1
2
3
if($satz =~ /^(.*)?WORT/) {
print $1;
}


Ab einem Wort ausgeben
Code: (dl )
1
2
3
if($satz =~ /^.*?WORT(.*)$/) {
print $1;
}



getestet :P\n\n

<!--EDIT|vayu|1127128087-->
format_c
 2005-09-19 15:05
#58178 #58178
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
So z.B.

Code: (dl )
1
2
3
4
5
6
if ($text =~ m/wort(.*?)andreeswort/) {
print $1;
}
else {
print "Nicht gefunden\n";
}


ungetestet

Gruß Alex
Crian
 2005-09-20 16:07
#58179 #58179
User since
2003-08-04
5870 Artikel
ModeratorIn
[Homepage]
user image
[quote=vayu,19.09.2005, 13:03]Bis zu einem Wort ausgeben
Code: (dl )
1
2
3
if($satz =~ /^(.*)?WORT/) {
print $1;
}


Ab einem Wort ausgeben
Code: (dl )
1
2
3
if($satz =~ /^.*?WORT(.*)$/) {
print $1;
}



getestet :P[/quote]
getestet? aber mit den Falschen Daten, was?

Code: (dl )
1
2
3
4
5
6
C:\>perl
$satz = "Dummer Text WORT mit verschiedenen WORTen und noch einem WORT!";
if($satz =~ /^(.*)?WORT/) {
print $1;
}^Z
Dummer Text WORT mit verschiedenen WORTen und noch einem
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
vayu
 2005-09-20 18:30
#58180 #58180
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
bei mir hats gefunzt ...

ah ... bin davon ausgegangen, dass das Wort nur einmal vorkommt ...

man sollte die threads doch richtig lesen ... :)\n\n

<!--EDIT|vayu|1127227097-->
Gast Gast
 2005-09-20 18:32
#58181 #58181
Du testest ja auch nur mit einem "WORT", mach mal mehrere rein.
vayu
 2005-09-20 18:38
#58182 #58182
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
jo hab das jetzt auch gesehen.
vayu
 2005-09-20 20:25
#58183 #58183
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
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
#!/usr/bin/perl

use warnings;
use strict;

my $word = "WORT";
my $otherword = "ANDRENWORT";
my @satz = ();
$satz[0] = "Ein Text mit einem WORT und noch einem ANDRENWORT sowie einem ANDRENWORT.";
$satz[1] = "Ein Text mit einem WORT und noch einem WORT sowie einem ANDRENWORT.";
$satz[2] = "Ein Text mit einem ANDRENWORT und noch einem WORT sowie einem ANDRENWORT.";
$satz[3] = "Ein Text mit einem ANDRENWORT und noch einem ANDRENWORT sowie einem WORT.";

foreach(@satz) {

print $_."\n";
if($_ =~ /(^.*?)\s$word.*/) {
print $1."\n";
}
if($_ =~ /.*(\s$word(.*?)\s$otherword).*/) {
print $2."\n";
}
print "__\n";
}


sooo ... wenn noch ein fall fehlt bitte sagen ;) bis jetzt hats funktioniert
Gast Gast
 2005-09-20 20:30
#58184 #58184
Ich hab's nicht getestet, aber was ist, wenn man "WORTANFANG" verwendet? :)
vayu
 2005-09-20 20:43
#58185 #58185
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
narf stimmt :P oh man ... hilf mir :) hab da echt schon länger dran rumgebastelt ...

der zweite regex is echt gar ned sooo leicht\n\n

<!--EDIT|vayu|1127234621-->
<< |< 1 2 >| >> 20 Einträge, 2 Seiten



View all threads created 2005-09-19 14:54.