Schrift
[thread]7766[/thread]

regex: sich wiederholende zeichen ermitteln (Seite 2)



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
Dubu
 2006-03-22 23:59
#63519 #63519
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=Linuxer,22.03.2006, 20:27]Der erste Ansatz mit {,3} war schon nicht ganz verkehrt... .s.u.

Code (perl): (dl )
$text =~ m/(?:.+){3,}/ ;


Sollte auf einen beliebigen String passen, der sich mindestens 3mal wiederholt.[/quote]
Nein, das passt auf jeden String, der aus mindestens drei Zeichen besteht. Die Wiederholung bezieht sich auf das Pattern, nicht auf den Match.
Ohne Backreferences bekommst die Wiederholung ("das gleiche nochmal") nicht hin.
Linuxer
 2006-03-23 02:00
#63520 #63520
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
[quote=Dubu,22.03.2006, 22:59]Nein, das passt auf jeden String, der aus mindestens drei Zeichen besteht. Die Wiederholung bezieht sich auf das Pattern, nicht auf den Match.
Ohne Backreferences bekommst die Wiederholung ("das gleiche nochmal") nicht hin.[/quote]
Stimmt, Denkfehler meinerseits ...
Dann biete ich folgendes (um das min. 3x abzudecken und die Varianz ob Zeichen oder String):

Code (perl): (dl )
$text =~ m/(.+)\1(?:\1)+/;


[edit]
Der letzte war spät am abend .... Variante am Morgen:
Code (perl): (dl )
$text =~ m/(.+)(?:\1){2,}/;

[/edit]\n\n

<!--EDIT|Linuxer|1143101571-->
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
renee
 2006-03-23 09:07
#63521 #63521
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn Du mehrere gleiche Worte hintereinander prüfen willst, dann wohl so:/\b(.*?)\b(?:\1)*/
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 >| >> 13 Einträge, 2 Seiten



View all threads created 2006-03-07 00:39.