Ragel state machines can not only recognize byte sequences as regular expression machines do, but can also execute code at arbitrary points in the recognition of a regular language.
Code embedding is done using inline operators that do not disrupt the regular language syntax.