Schrift
[thread]6453[/thread]

Pattern Matching: Probleme Muster zu erstellen

Leser: 2


<< |< 1 2 3 >| >> 21 Einträge, 3 Seiten
peggy
 2004-08-03 16:11
#85276 #85276
User since
2004-07-23
29 Artikel
BenutzerIn
[default_avatar]
HUHU!
Ich habe hier ein kleines Problem mit der Erkennung von Mustern. Ich habe drei verschiede Variationen von Strings, die ich unterschiedlich behandeln möchte. Mein Problem ist, dass ich keine vernünftigen Muster hinkriege.
Die drei variationen sind:
"Negation : ; "-->d.h. nach Doppelpunkt und Simikolon folgt nichts (kein Wort)
"Object_Ground: ;Object "-->d.h. nach Doppelpunkt folgt nichts, nach Simikolon schon
"Object_Plant :Color Position ;Object" -->d.h nach beiden folgt ein Wort!

Leider finde ich das mit den Mustern ziemlich schwer :( Kann mir jemand helfen??? Vielen dank im vorraus!
peggy
esskar
 2004-08-03 16:17
#85277 #85277
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
if($string =~ m!^([\w_]+) :([\w_]+);([\w_]+) $)
{
  # dritter Fall
}
elsif($string =~ m!^([\w_]+) :([\w_]+); $)
{
  # zweiter Fall
}
elsif($string =~ m!^([\w_]+) :; $)
{
  # erster Fall
}


nicht getestet!\n\n

<!--EDIT|esskar|1091535636-->
peggy
 2004-08-03 16:35
#85278 #85278
User since
2004-07-23
29 Artikel
BenutzerIn
[default_avatar]
Huhu!
Danke für die schnelle antwort. Wenn ich das so mache bekomme ich folgende Fehlermeldung:


syntax error at Frameserstellen.pl line 30, near "+) "
(Might be a runaway multi-line !! string starting on line 25)
syntax error at Frameserstellen.pl line 33, near "}"
Search pattern not terminated at Frameserstellen.pl line 34.

Ich hab es versucht mit / /, weil man das doch normalerweise so schreibt. Dann erkennt er anfang und ende der patterns aber er paßt nicht auf die strings!
:(

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if($element = ~ m!^([\w_]+) :([\w_]+);([\w_]+) $ )
{
print "geht auch das?";

}
elsif($element = ~ m!^([\w_]+) :([\w_]+); $)
{
print "geht das?";
}
elsif($element = ~ m!^([\w_]+) :; $)
{

print "</frame entry>";

}
else{print "Fehler in Datei: Syntax nicht eingehalten";}
Ishka
 2004-08-03 16:37
#85279 #85279
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
if($string =~ m!^ *([\w_]+) *: *([\w_]+) *; *([\w_]+) * $!
{
# dritter Fall
}
elsif($string =~ m!^ *([\w_]+) *: *([\w_]+) *; *$!
{
# zweiter Fall
}
elsif($string =~ m!^ *([\w_]+) *: *; *$!
{
# erster Fall
}

auch nicht getestet. Aber wenn ich mir deine Beispieldaten anschaue, glaube ich, daß du dich nicht auf die Anzahl der Leerzeichen verlassen willst.\n\n

<!--EDIT|Ishka|1091536717-->
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
Ronnie
 2004-08-03 16:41
#85280 #85280
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
bei esskar fehlen schließende ! der Regex bei ishka die schließende ) der if-clause. Stimmt was mit dem CODE-Tag nicht?\n\n

<!--EDIT|Ronnie|1091536903-->
peggy
 2004-08-03 16:43
#85281 #85281
User since
2004-07-23
29 Artikel
BenutzerIn
[default_avatar]
@ishka: frag nicht, du weißt garnicht wie lange ich schon daran sitze (musste noch andere strings rausschmeißen etc.) weil die datei einfach so niedergeschrieben is. Leerzeichenhorror ;)
Ishka
 2004-08-03 17:48
#85282 #85282
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
ups @ Klammer - kommt von C&P und Fehlerkorrigieren, ohne wirklich hinzuschauen ;)

wegen den Leerzeichen hab ich ja das ' *' eingebaut :)
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
peggy
 2004-08-04 12:14
#85283 #85283
User since
2004-07-23
29 Artikel
BenutzerIn
[default_avatar]
Nu gehts! Herzlichsten Dank (nen paar gehen noch nicht, ich versuchs erstmal selbst)\n\n

<!--EDIT|peggy|1091610275-->
renee
 2004-08-04 12:52
#85284 #85284
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
mit substr:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#! /usr/bin/perl

use strict;
use warnings;

my $string = 'Object_Plant :Color Position;Object';

my $pos_dp = index($string,':');
my $pos_sk = index($string,';');
my $part_one = substr($string,0,$pos_dp);
my $part_two = substr($string,($pos_dp + 1),($pos_sk - $pos_dp - 1));
my $part_three = substr($string,($pos_sk + 1));
print $part_one," -> ",$part_two," -> ",$part_three,"\n";
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
peggy
 2004-08-04 13:06
#85285 #85285
User since
2004-07-23
29 Artikel
BenutzerIn
[default_avatar]
Wieso muss man vom SK die Position des DP abziehen?\n\n

<!--EDIT|peggy|1091610427-->
<< |< 1 2 3 >| >> 21 Einträge, 3 Seiten



View all threads created 2004-08-03 16:11.