Я пытаюсь создать регулярное выражение, совпадающее с обратным определенному типу строки (например, строки, не заканчивающиеся на ".js").
Согласно документации, это должно быть выражение #rx"(?!\\.js$)"
, но, похоже, оно не работает. Чтобы проверить это, у меня есть эта функция:
(define (match-test regex)
(map (lambda (text)
(regexp-match? regex text))
'("foo.js" "bar.css" "baz.html" "mumble.gif" "foobar")))
(match-test #rx"\\.js$")
возвращает (#t #f #f #f #f)
, как и ожидалось, но (match-test #rx"(?!\\.js$)")
возвращает (#t #t #t #t #t)
, где я ожидал (#f #t #t #t #t)
.
Что я делаю не так, и как я могу получить регулярное выражение в Racket, чтобы выразить идею "соответствовать чему-либо, что не содержит [x]"?