$re = '/# Look for `Wild Draw Four` or simply `Wild`
# `W` stored in \1, `D` and `F` stored in \2 and \3, respectively
(W)I\ LD(?:\ (D)raw\ (F)our)?
|
# Look for `Draw Two` or `Draw Four`
# `D` stored in \4, `T` or `F` stored in \5
(D)raw\ (?|(T)wo|(F)our)
|
# Look for the color and then the card type or number value
# `R`, `G`, `Y`, and `B` stored in \6
# `S`, `R` or number value stored in \7
(?:(?|(R)ed|(G)reen|(Y)ellow|(B)lue)\
(?|(S)kip
|(R)everse
|(\d)
)
)/x';
$str = 'GIVEN:
Green 4 Green 4 Green 7 WI LD Green 9 Green 9 Red 3 Red 3 Red 4 WI LD Draw Four Red 5 Red Reverse Yellow 0 Yellow Skip Green 8 WI LD Draw Four
Green 4
Green Reverse Yellow 6
WI LD
WI LD Draw Four
WI LD Green 6
WI LD Draw Four Green 6
DESIRED:
G4 G4 G7 W G9 G9 R3 R3 R4 WDF R5 RR Y0 YS G8 WDF
G4
GR Y6
W
WDF
W G6
WDF G6
';
$subst = "\1\2\3\4\5\6\7";
$result = preg_replace($re, $subst, $str);
echo "The result of the substitution is ".$result;
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php