Can you explain me the regulsr expression ...
I can begin to explain it and then pass you off to some explanations in the docs that do a better job than I could.
-
\G Begin a 'global' search (i.e., a search controlled by the /g regex modifier) at the exact position where the previous search left off, or at the start of the string (same as \A) if there was no previous search.
-
(\d{2,3}?) Capture two or three decimal digits. Because the ? 'lazy' match modifier controls matching, try first to capture two digits (normal matching would be 'greedy' and try to grab three).
-
(?(?{ $^N < 32 }) (*FAIL)) If the two digits captured by the immediately previous capture group (see $^N in perlvar) are numerically less than 32, fail that match and go back and try for three digits. Here's where I bail out. See Extended Patterns in perlre and search for the "(?(condition)yes-pattern)" discussion; also check the Conditional expressions section in perlretut. Check Special Backtracking Control Verbs in perlre for info on (*FAIL); see also the Backtracking control verbs discussion in perlretut. (Note that (*FAIL) can be replaced by (?!) if you're scared by the "WARNING: These patterns are experimental and subject to change..." language prefacing documentation of these verbs.)
HTH.
| [reply] [d/l] [select] |