in reply to Resetting pos() within a RegEx?

That's for sure possible in a sole RegEx without while loop just with a /g-modifier!
No. A regexp cannot print anything. Somewhere, you need to execute code, either outside a regexy construct, in the replacement part of an s/// with the /e modifier, or by using (?{ }) or (??{ }).

But if I'm allowed to execute code, than the constraint "do it in a single regexp" isn't a constraint at all. Then I just do /^(?{ code to generate whatever you want })/.

I suggest to be more specific in what you (dis)allow to have a more fun challenge.

Replies are listed 'Best First'.
Re^2: Resetting pos() within a RegEx?
by LanX (Saint) on Jan 11, 2009 at 01:55 UTC
    > I suggest to be more specific in what you (dis)allow to have a more fun challenge.

    It's for golfing, I just want to get shorter code by getting rid of the while-command not neccessarily replacing the print command.

Re^2: Resetting pos() within a RegEx?
by Skeeve (Parson) on Jan 11, 2009 at 09:14 UTC

    But if I'm allowed to execute code, than the constraint "do it in a single regexp" isn't a constraint at all.
    So here we go with 3 regexps and no code execution (exept for initializing and printing):

    $_="x" x 30; s:xx:$' $`$&\n:g; s:(?<=\n).*:$&$`$`:s; s/xx(?=(x*)(\1) )/ /g; print;

    s$$([},&%#}/&/]+}%&{})*;#$&&s&&$^X.($'^"%]=\&(|?*{%
    +.+=%;.#_}\&"^"-+%*).}%:##%}={~=~:.")&e&&s""`$''`"e
      Still many bytes, but I really like your approach of taking the postmatch to indend the substitution! =)

      like this it's quick and easy to get the triangular part of the tree!!!

      DB<<70>> $_=$"x15;s: :$'#$`$`#\n:g;print ## # # # # # # # # # # # # # # # # # # # # # # # # # # # # DB<<71>> $_=$"x15;s: :$_=$`;y/ /#/;"$'$_$_\n":ge;print ## #### ###### ######## ########## ############ ############## ################ ################## #################### ###################### ######################## ########################## ############################