Font
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5638[/thread]

WordWrapper Regex: Für Perfektionisten

Tags: Similar Threads

Reader: 1


<< >> 7 entries, 1 page
Thorium
 2003-08-19 16:56
#70462 #70462
User since
2003-08-04
232 articles
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
2239 articles
ModeratorIn
[Homepage] [default_avatar]
Kennst Du schon CPAN:Text::Wrap -? 8)
Erst denken, dann posten -- Frankfurt.pm-Treffen am Dienstag 07.01.2020 im Café Diesseits
22. Deutscher Perl-Workshop 04. bis 06.03.2020 in Erlangen.
Frankfurt Perl-Workshop 2020-1 ca. Mai-Juni 2020 im Haus der Jugend

Winter is Coming
Thorium
 2003-08-20 17:51
#70464 #70464
User since
2003-08-04
232 articles
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
12194 articles
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 articles
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 articles
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 articles
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 entries, 1 page



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