seth: [Regex]Vor einem Zeichen X darf kein Zeichen Y stehen

Beitrag lesen

gudn tach!

der kram laesst sich uebrigens noch ein bissl verschoenern. seit perl 5.10 gibt's den p-modifier, siehe selfhtml-wiki: damit saehe das ganze dann so aus:

while($tmp=~/  
    (?<!\\)\[       # opening bracket  
    (?:  
      [^\[\]]       # non-bracket  
      |             # or  
      (?<=\\)[\[\]] # bracket prefixed by backslash  
    )+  
    (?<!\\)\]       # closing bracket  
  /px){  
  $tmp = ${^PREMATCH}.${^POSTMATCH};  
  $execute = ${^MATCH};  
}

beachte, dass du hierbei voellig ohne capture groups auskommst.

ach so, und es geht uebrigens auch ohne look-arounds:

$tmp=~/  
  [^\\]\K\[       # opening bracket  
  (?:  
    \\[\[\]]      # bracket prefixed by backslash  
    |             # or  
    [^\[\]]       # non-bracket  
  )+  
  [^\[\]\\]\]     # closing bracket  
/px

naja, ok, "\K" ist ein spezialfall eines look-behinds, aber ohne den wuerde es halt doch wieder ein bissl unnoetig komplizierter werden.

prost
seth