FeyFre
#1
Now you can do this using regular expression eg:
\.(h|c)[^\.]*$

#2
Some programs use to multiple wildcards search a list of items separated by semicolon or space.
But both semicolon and space can be included in the file name.
In this way, we do not find a file whose name contains a semicolon or a space:
*;*
* *
Can I use an another separator? One of these, which is illegal in the file name:
<>:"/\|*?
I think will be good colon : or pipe |.

"|" is widely used as exluding mask.
":" is valid character, because you specifying full name with letter.
Mask with spaces must be qouted by quotes. So mask separators if they used as part of mask must be quoted.
By the way, it is only ntfs and fat does not allows colons in names, but not some other FSs(ext2/3/4, other from UNIX world).

Semicolon ';' and comma ',' are commonly used as separators in different file managers. Also, spaces are ignored in this case, i.e. "*.cmd;*.bat" equals to "*.cmd, *.bat". This is a common and usual way, so seems to be the best option. If you want to support ',' and ';' as a part of file name, consider use them inside quotes. Otherwise just treat them as separators.