Schrift
[thread]8538[/thread]

regulärer ausdruck richtig? (Seite 2)



<< |< 1 2 >| >> 18 Einträge, 2 Seiten
renee
 2006-11-29 17:32
#72061 #72061
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dieses Grundproblem ist aber keines des Regulären Ausdrucks. Sondern man müsste eine Regel "erfinden, wann ein Leerzeichen kommen soll und wann nicht.
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/
bloonix
 2006-11-29 18:04
#72062 #72062
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=renee,29.11.2006, 16:32]Dieses Grundproblem ist aber keines des Regulären Ausdrucks.[/quote]
Korrekt, aber es ist ja auch nicht unerwünscht, auf mögliche andere
Probleme hinzudeuten.

[quote=renee,29.11.2006, 16:32]Sondern man müsste eine Regel "erfinden, wann ein Leerzeichen kommen soll und wann nicht.[/quote]
Ja, wenn man es richtig machen möchte, dann müsste man solch eine
Regel "erfinden".\n\n

<!--EDIT|opi|1164816278-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2006-11-29 18:20
#72063 #72063
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ja klar, ich finde es immer gut, wenn bei so etwas eine Diskussion (zum Thema) entsteht. Mehr Augen sehen mehr ;-)
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/
bloonix
 2006-11-29 18:37
#72064 #72064
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=renee,29.11.2006, 17:20]Ja klar, ich finde es immer gut, wenn bei so etwas eine Diskussion (zum Thema) entsteht.[/quote]
Weiß ich doch! =)
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
PerlProfi
 2006-11-29 22:25
#72065 #72065
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
[quote=kale_1990,29.11.2006, 12:51]also ich habs jetz vorläufig mal mit regulären ausdrücken gemacht, und war so:

Code: (dl )
1
2
$inhalt =~ s/\<.+?\>/ /g;
$inhalt =~ s/^\s//;
[/quote]
Code: (dl )
$inhalt =~ s/^\s//;
entfernt nur vorne die Leerzeichen, wenn dein string so aussieht: "<font color=blue>das ist ein test</font>" wird aber auch hinten ein leerzeichen dran gehängt.
Falls du möchtest, dass auch hinten die Leerzeichen weggelassen werden, kannst du volgendes verwenden:
Code: (dl )
$inhalt =~ s/^\s*(.*)\s*$/$1/;


Und bei:
Code: (dl )
$inhalt =~ s/<.+?>/ /g;
kannst du '+?' durch '*' ersetzen.

'+' = vorherige Struktur mindestens 1 mal
'*' = vorherige Struktur beliebig oft(auch gar nicht)

MfG.: PerlProfi
renee
 2006-11-29 22:50
#72066 #72066
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=PerlProfi,29.11.2006, 21:25]Und bei:
Code: (dl )
$inhalt =~ s/<.+?>/ /g;
kannst du '+?' durch '*' ersetzen.[/quote]
Nein, Stichwort "Gierig"...

+? ist nicht gierig, nimmt also den kleinsten Match
* ist gierig, nimmt den längsten Match...

Außerdem bedeutet das +, dass mindestens 1 Zeichen zwischen < und > sein muss, bei * nicht.
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/
PerlProfi
 2006-11-29 22:55
#72067 #72067
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
[quote=renee,29.11.2006, 21:50][quote=PerlProfi,29.11.2006, 21:25]Und bei:
Code: (dl )
$inhalt =~ s/<.+?>/ /g;
kannst du '+?' durch '*' ersetzen.[/quote]
Nein, Stichwort "Gierig"...

+? ist nicht gierig, nimmt also den kleinsten Match
* ist gierig, nimmt den längsten Match...

Außerdem bedeutet das +, dass mindestens 1 Zeichen zwischen < und > sein muss, bei * nicht.[/quote]
Wirklich?
wow, das hab ich noch gar nich gewusst...

Aber was bewirkt das ? nach dem + dann?
Wenn trotzdem mindestens ein Zeichen dazwischen stehen muss?
renee
 2006-11-29 23:00
#72068 #72068
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das bewirkt, dass der Reguläre Ausdruck nicht gierig ist.

Vergleiche:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl

use strict;
use warnings;

my $var = "<font coler=blue>H</font><>";

(my $test1 = $var) =~ s!<.+>!-#-!g;
print "Test1: $test1\n";

(my $test2 = $var) =~ s!<.+?>!-#-!g;
print "Test2: $test2\n";

(my $test3 = $var) =~ s!<.*>!-#-!g;
print "Test3: $test3\n";

(my $test4 = $var) =~ s!<.*?>!-#-!g;
print "Test4: $test4\n";


Ausgabe:
Code: (dl )
1
2
3
4
Test1: -#-
Test2: -#-H-#-<>
Test3: -#-
Test4: -#-H-#--#-
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/
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



View all threads created 2006-11-29 12:26.