Schrift
[thread]6179[/thread]

pattern matching



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
misuzu
 2004-04-02 12:25
#81403 #81403
User since
2004-02-17
16 Artikel
BenutzerIn
[default_avatar]
hallo,

wie kriege ich aus dem unteren script
Code: (dl )
1
2
3
4
<script>
T('München','328230f707398','27.04.04',7,398)
T('München','328230e907398','13.04.04',7,395)
</script>

den letzten wert von der klammer T()
in diesem falle wäre es "398"

wäre über hilfe dankbar\n\n

<!--EDIT|misuzu|1080894376-->
jan
 2004-04-02 12:30
#81404 #81404
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
lies das ganze zeile für zeile ein ...
schau, ob substr($zeile, 0, 1) eq 'T'
wenn, dann splite substr($zeile, 2, -1) mit /,/ (also
Code: (dl )
my @zeilenteile = split(/,/, substr($zeile, 2, -1));
)
der letzt wert steht dann jeweils in @zeilenteile[-1].
Crian
 2004-04-02 12:31
#81405 #81405
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
Skript?

Wenn das ein Array ist, dann mit [-1].
Falls das Zeilen in einer Datei sind, dann mit m~,(\d+)\)$~.\n\n

<!--EDIT|Crian|1080894736-->
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
Crian
 2004-04-02 12:34
#81406 #81406
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
[quote=jan,02.04.2004, 10:30]lies das ganze zeile für zeile ein ...
schau, ob substr($zeile, 0, 1) eq 'T'
wenn, dann splite substr($zeile, 2, -1) mit /,/ (also
Code: (dl )
my @zeilenteile = split(/,/, substr($zeile, 2, -1));
)
der letzt wert steht dann jeweils in @zeilenteile[-1].[/quote]
Dann hast Du aber die Klammer mit drin denk ich mal. splitte lieber substr($zeile,2,-2).
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
Taulmarill
 2004-04-02 12:34
#81407 #81407
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Code: (dl )
1
2
3
4
5
6
while ( my $line = code-um-zeile-einzulesen ) {
if ( $line =~ /T\((.*)\)/ ) {
my $number = (split ",", $1)[-1];
print "$number\n";
}
}
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
jan
 2004-04-02 12:36
#81408 #81408
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
achso, mhja, stimmt, ich gehe da immer von einem chomp aus, da sage ich das dann schon gar nicht mehr dazu ;)

danke für die korrektur.
Crian
 2004-04-02 12:40
#81409 #81409
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
Wenn dieser Scriptblock in einer langen Datei steht (oder vielleicht sogar mehrere davon), musst Du vielleicht eine Miniatur-State-Machine verwenden, die festhält, ob Du Dich gerade in einem solchen Block befindest oder nicht, und nur wenn es so ist die Zeilen entsprechend einer der hier gezeigten Möglichkeiten auswerten.
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
Crian
 2004-04-02 12:41
#81410 #81410
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
[quote=jan,02.04.2004, 10:36]achso, mhja, stimmt, ich gehe da immer von einem chomp aus, da sage ich das dann schon gar nicht mehr dazu ;)[/quote]
Jau ich auch, was ich meine ist: Das Zeichen an Position -1 ist die schließende Klammer ')', die willst Du ja aber nicht mit ausgeben... deshalb -2. Wenn man das chomp vergisst, dann -3 ... ^^

edit: scheiß smilies\n\n

<!--EDIT|Crian|1080895437-->
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
jan
 2004-04-02 12:47
#81411 #81411
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
ach so. na dann ziehe ich alles zurück und behaupte das gegenteil ;)
substr nimmt den dritten wert als exklusiv, nicht inklusiv:
Code: (dl )
1
2
my $string = "(ein test)";
print substr($string, 1, -1);

gibt
Quote
ein test
aus.
misuzu
 2004-04-02 12:51
#81412 #81412
User since
2004-02-17
16 Artikel
BenutzerIn
[default_avatar]
ok - werde die vorschläge mal probieren

danke erstmal
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2004-04-02 12:25.