#!/usr/bin/env perl use strict; use warnings; use Data::Dumper; my $blub = "hund:bello,12,w"; my $blab = "katze:mini,m"; my $pattern = qr{ ^(?:(?hund)|(?katze)) # hund oder katze, zusätzlich in \1 und \2 capturen \: # trenner (?[^\,]+) # name \, # trenner (?(1) (?\d+) # gewicht nur wenn \1 gematcht hat (e.g. hund) \, # trenner ) (?m|w) # geschlecht $ }x;