Fürs Nachvollziehen: Das mit dem Klammern funktioniert in regulären Ausdrücken wirklich genau so streng und einfach wie in der Schulmathematik. Lediglich die in Klammern voranstellbare Option (?i)
ist anders.
Diese Schreibweise ist vorliegend aber auch „speziell“ und wird dann verwendet wenn das Pattern nicht in Begrenzer eingeschlossen wird, entspricht also
/\.(gif|jpe?g|png|bmp)/i
So z.B. auch bei grep (Das nehme ich gern zum Testen/Üben/Zeigen):
~> echo -e "foo.Bmp\nbar.bin"
foo.Bmp
bar.bin
~> echo -e "foo.Bmp\nbar.bin" | grep -P "(?i)\.(gif|jpe?g|png|bmp)$"
foo.Bmp