Schrift
[thread]6105[/thread]

regulaerer ausdruck: bis ende oder nicht



<< >> 7 Einträge, 1 Seite
Gast Gast
 2004-02-29 12:30
#80392 #80392
Hallo,

ich habe noch ein problem mit perl :)

undzwar ich habe einen string und will das wie folgt dann in 2 variablen aufteilen.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
$string = "make test blub ...";

# jetzt soll
$a = "make"
# und
$b = "test blub ..."
# sein
# das kann ich ja mit
($a,$b) = ($string =~ m/^(.*?) (.*)$/);
# machen


aber wenn jetzt in $string nur "make" drin steht klappt das wie oben nicht.

was muss ich jetzt machen das es wie folgt laeuft
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$string = "make test blub ..."
($a,$b) = ?????
print $a;
ausgabe=> make

print $b
ausgabe=> test blub ...

$string = "make"
($a,$b) = ?????
print $a;
ausgabe=> make

print $b
ausgabe=>


also in $a soll alles "vor" dem 1. leerzeichen stehen (oder wenn kein leerzeichen vorkommt soll in $a alles drin stehn) und in $b soll dann der rest drin stehn.

Gruss
jn
renee
 2004-02-29 13:20
#80393 #80393
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
warum machst Du es nicht so:
Code: (dl )
my ($a,$b) = split(/\s/,$string,2),
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/
Ronnie
 2004-02-29 13:22
#80394 #80394
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
#!/usr/bin/perl

use strict;
use warnings;

my $string = "make test blub usw usf";

my ($a, $b) = $string =~ /^(\w+)\s(.*)$/;
print "$a - $b\n";


Sollte so funktionieren.

Gruss,
Ronnie

EDIT1: hatte ein my vergessen.\n\n

<!--EDIT|Ronnie|1078054213-->
renee
 2004-02-29 13:24
#80395 #80395
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das hier funktioniert aber auch:
Code: (dl )
1
2
3
$string = 'make'; 
($a,$b) = $string =~ /([^\s]+)\s*?(.*)$/;
print $a,' -> ',$b;
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/
Strat
 2004-02-29 13:26
#80396 #80396
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
dafuer ist wohl ein split besser geeignet:
Code: (dl )
my ($x, $y) = split(/ /, $string, 2);

$a und $b sind fuer die funktion sort reserviert, von daher sollte man die besser nicht verwenden
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Ishka
 2004-02-29 15:28
#80397 #80397
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
[quote=renee,29.02.2004, 12:24]Das hier funktioniert aber auch:
Code: (dl )
1
2
3
$string = 'make'; 
($a,$b) = $string =~ /([^\s]+)\s*?(.*)$/;
print $a,' -> ',$b;
[/quote]
Das ? macht hier aber keinen Unterschied..
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}
renee
 2004-02-29 17:26
#80398 #80398
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dieses Aber war nicht auf Ronnie bezogen, sondern als "Erweiterung" zu meiner vorherigen Antwort...
Ich habe nicht gewusst, dass Ronnie auf den "submit"-Button klickt, während ich meinen Beitrag schreibe...
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/
<< >> 7 Einträge, 1 Seite



View all threads created 2004-02-29 12:30.