Regex operating on binary should be just as efficient as operating on textual. The basics of regex is based on DFA, Deterministic Finite Automata. The matching of characters are mostly language or code pages agnostics, it is matching for equivalence mostly, not really english or non-english or chinese or other human languages. There are those grouping cases like matching for “Alphabets”, which are in basics expressed as [A-Za-z]. Here the search space is 52 characters, which is often just a O(1) operation. Even if it is another group like \AlienAlphabets, it is still going to be O(1) when it is span across 1000 possible characters.
When you apply this to binary, it is just another set of characters set, so regex works just the same as long as you know the structure in the binary you are searching for. The issue is you need structure to search, otherwise the regex will not understand 4 bytes make an integer, and in the binary world, a 32bits double word can be 4 ASCII characters, or 2 16bits words, or one 32bits integer, or even a single precision float point value.
When it comes to performance, regex is not the most effective string matching algorithm, but it is an extremely flexible one.
If you want to find matching sequence of bytes in a directory, there is one extremely good software for it