Thread regex Klammern (6 answers)
Opened by perl at 2011-02-13 02:58

Gast perl
 2011-02-13 02:58
#145609 #145609
Hallo,

ich habe versucht eine Zeichenfolge
Quote
\Befehl{arg1}{arg2}...{argn}
zu zerlegen. Dazu habe ich ein Vorlage aus der Hilfe angepasst die auch für ein Argument klappt.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$re = qr  /(?:[\s\n]*|[\s]*%[^\n]*\n)*
(?<first> # start capture buffer 1?<first>
\{ # match an opening paren
( # capture buffer 2
(?: # match one of:
(?> # don't backtrack over the inside of this group
[^{}]+ # one or more
) # end non backtracking group
| # ... or ...
(?&first) # recurse to opening 1 and try it again &first
)*? # 0 or more times.
) # end of buffer 2
\} # match a closing paren
) # end capture buffer one
/x;

$s =~ /\n[^%]*\\Befehl$re/g;

Jetzt habe ich aber (1-9) Argumente. Daher habe ich
$s =~ /\n[^%]*\\Befehl$re{1,9}/g; versucht. (Auch verschiedene Versionen mit Klammern. ($re){1,9}, ($re{1,9})
Auch $s =~ /\n[^%]*\\Befehl$re$re$re$re$re$re$re$re/g; hat für genau 9 Argumente geklappt.
Hat jemand eine Idee was falsch sein könnte?
Last edited: 2011-02-13 03:10:18 +0100 (CET)

View full thread regex Klammern