Schrift
[thread]5638[/thread]

WordWrapper Regex: Für Perfektionisten

Tags: Ähnliche Threads

Leser: 1


<< >> 7 Einträge, 1 Seite
Thorium
 2003-08-19 16:56
#70462 #70462
User since
2003-08-04
232 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich frage mich gerade wie man eine Regex zu einem WordWrapper umfunktioniert. Er soll also nach einer gewissen Anzahl zeichen nach einem whitespace einen Zeilenumbruch anfügen. Besteht die ganze Zeile aus einem Wort (also ohne \s) ist an der grenze das Wort zu trennen.

Code: (dl )
1
2
my $wrap = 120;
$langezeile =~ s/^(?:(.{0,$wrap}\s+)|(.{$wrap}))/$1$2\n/g;


naja das sieht mir noch nicht so schön aus, vorallem $1$2... Da gibts doch sicher ne schönere Lösung...\n\n

<!--EDIT|Thorium|1061297815-->
Per|li|nist der; -en, -en <zu ↑...ist>: a) Anhänger, Vertreter der radikalen Perlinisten die Perl als die einzig wahre Sprache ansehen; b) Mitglied einer perlinistischen Community.
Relais
 2003-08-19 17:04
#70463 #70463
User since
2003-08-06
2244 Artikel
ModeratorIn
[Homepage] [default_avatar]
Kennst Du schon CPAN:Text::Wrap -? 8)
Erst denken, dann posten --
26. Deutscher Perl- u. Raku -Workshop 15. bis 17.04.2024 in Frankfurt/M.

Winter is Coming
Thorium
 2003-08-20 17:51
#70464 #70464
User since
2003-08-04
232 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich schreib gerade ein Perl-Regex-Tutorial, da hätt ich lieber den Ausdruck und ned ein Modul ;)
Per|li|nist der; -en, -en <zu ↑...ist>: a) Anhänger, Vertreter der radikalen Perlinisten die Perl als die einzig wahre Sprache ansehen; b) Mitglied einer perlinistischen Community.
pq
 2003-08-20 17:55
#70465 #70465
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Thorium,20.08.2003, 15:51]Ich schreib gerade ein Perl-Regex-Tutorial, da hätt ich lieber den Ausdruck und ned ein Modul ;)[/quote]
aber es schadet nicht, sich das modul anzuschauen.
lies den code, versteh ihn, und verwende ihn. =)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Dubu
 2003-08-20 18:32
#70466 #70466
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Dann solltest du in das Tutorial auch hineinschreiben, dass es dafuer schon (mindestens) ein Modul gibt. ;-)
Thorium
 2003-08-23 19:39
#70467 #70467
User since
2003-08-04
232 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=pq,20.08.2003, 15:55]aber es schadet nicht, sich das modul anzuschauen.
lies den code, versteh ihn, und verwende ihn. =)[/quote]
Hast DU es dir schonmal angeschaut? Ich ja, und es verwendet eine Reihe von Regex. Mit einer Vielzahl if's und elses.. ich mein, das is zwar ok, aber nicht das was ich suche.
Und auch ist es nicht nötig zu sagen, dass es ein Modul dafür gibt, da Module nicht das Thema sind, sondern die Zeile nur ein Beispiel für Regexes sein soll...
...
Dann schau ich eben selber...
Per|li|nist der; -en, -en <zu ↑...ist>: a) Anhänger, Vertreter der radikalen Perlinisten die Perl als die einzig wahre Sprache ansehen; b) Mitglied einer perlinistischen Community.
betterworld
 2003-08-23 20:01
#70468 #70468
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
$width=80;
$_ = join "", <STDIN>;

while(length > $width || /\n/){
(s%^(.{1,$width})\n%%) or # wrap at newline
s%^(.{1,$width}) +%% or # wrap at space (which will be removed)
s%^(.{1,$width}[,\?\!\./])%% or # wrap at one of,?!./
s%^(.{$width})%%; # wrap exactly at the edge of the screen
push @lines, $1;
}

print "$_\n" for @lines;
<< >> 7 Einträge, 1 Seite



View all threads created 2003-08-19 16:56.