4 karakter dengan garis miring 2 tanpa
Di mesin regex bahasa TXR, kelas karakter kosong []
tidak cocok dengan karakter, dan karenanya tidak ada string. Ini berlaku seperti ini karena kelas karakter memerlukan kecocokan karakter, dan ketika kosong itu menentukan bahwa tidak ada karakter yang bisa memuaskannya.
Cara lain adalah dengan membalikkan "himpunan semua string termasuk kosong" regex /.*/
menggunakan operator komplemen: /~.*/
. Komplemen set itu tidak mengandung string sama sekali, sehingga tidak dapat menandingi apa pun.
Ini semua didokumentasikan di halaman manual:
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".
Garis miring bukan bagian dari sintaks regex per se; mereka hanya tanda baca yang membatasi regex dalam notasi S-ekspresi. Saksi:
# 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