Thread split at '[ ]' (13 answers)
Opened by firstday at 2013-04-24 19:20

Linuxer
 2013-04-24 21:54
#167273 #167273
User since
2006-01-27
3758 articles
HausmeisterIn

user image
[ leitet unmaskiert innerhalb von (Regex-) Pattern eine sogenannte Zeichenklasse ein.
Wenn Du es als reines "echtes" Zeichen verwenden willst, musst Du es explizit maskieren.

(erweitertes) Beispiel:
Code (perl): (dl )
1
2
3
4
5
6
7
my $text = "[URL]http://www.perl-community.de[/URL]";

# split-Pattern: eckige Klammern maskiert; / ist optional; dadurch ist der Ausdruck kuerzer
# das grep sammelt alle Ergebnisse ein, deren Stringlaenge mindestens 1 betraegt
my @fields = grep { length > 0 } split m{\[/?URL\]}, $text;

print "@fields\n";


edit: oder etwas umgeändert:

Code (perl): (dl )
1
2
3
4
5
6
7
my $text = "[URL]http://www.perl-community.de[/URL] bla bla [URL]https://example.org[/URL] bla bla ";

# split-Pattern: eckige Klammern maskiert; / ist optional; dadurch ist der Ausdruck kuerzer
# das grep sammelt (sehr grosszuegig) alle Ergebnisse ein, die mit einer Protokoll-Angabe wie "ftp://" oder "http://" beginnen
my @fields = grep { m{\A\w+://} } split m{\[/?URL\]}, $text;

print join "\n",@fields, '';

Last edited: 2013-04-24 23:08:58 +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 split at '[ ]'