Thread Zeichenkette mehrfach aus String lesen und Position verwenden (5 answers)
Opened by singsang at 2013-05-02 20:59

Linuxer
 2013-05-02 22:52
#167406 #167406
User since
2006-01-27
3872 Artikel
HausmeisterIn

user image
Man kann auch mit einem globalen Regex-Matching arbeiten, das in einer while()-Schleife steckt.
Mit pos() kann man abfragen, an welcher Stelle der "Suchzeiger" des Regex im zu durchsuchenden Skalar aktuell steht.
Da die Position in diesem Beispiel immer direkt hinter dem Treffer liegt, ist die Länge des Suchbegriffs davon abzuziehen.

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

use 5.016;

# Position    0        10        20
#             |        |         |
my $string = "123abc789def345abc901";
my $search = "abc";
my $length = length($search);


while ( $string =~ m/$search/gi ) {
    say pos($string)-$length;
}

__END__


Resultat:
Code: (dl )
1
2
3
$ perl /tmp/t.pl 
3
15

Last edited: 2013-05-02 22:54:04 +0200 (CEST)
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!

View full thread Zeichenkette mehrfach aus String lesen und Position verwenden