### 4 chars with slashes 2 without

In the TXR language's regex engine, an empty character class `[]` matches no character, and therefore no string. It behaves this way because the character class requires a character match, and when it is empty it specifies that no character can satisfy it.

Another way is to invert the "set of all strings including empty" regex `/.*/` using the complement operator: `/~.*/`. The complement of that set contains no strings at all, and so cannot match anything.

This is all documented in the man page:

 nomatch
 The nomatch regular expression represents the empty set: it
 matches no strings at all, not even the empty string. There is
 no dedicated syntax to directly express nomatch in the regex
 language. However, the empty character class [] is equivalent
 to nomatch, and may be considered to be a notation for it. Other
 representations of nomatch are possible: for instance, the regex
 ~.* which is the complement of the regex that denotes the set of
 all possible strings, and thus denotes the empty set. A nomatch
 has uses; for instance, it can be used to temporarily "comment
 out" regular expressions. The regex ([]abc|xyz) is equivalent to
 (xyz), since the []abc branch cannot match anything. Using [] to
 "block" a subexpression allows you to leave it in place, then
 enable it later by removing the "block".

The slashes are not part of the regex syntax per se; they are just punctuation which delimits regexes in the S-expression notation. Witness:

 # match line of input with x variable, and then parse that as a regex
 #
 $ txr -c '@x
 @(do (print (regex-parse x)) (put-char #\newline))' -
 ab.*c <- input from tty: no slashes.
 (compound #\a #\b (0+ wild) #\c) <- output: AST of regex