Я пытаюсь создать регулярное выражение, которое соответствует инверсии определенного типа строки (так что строки, не заканчивающиеся на .js ", например).Racket регулярное выражение соответствие
В соответствии с документацией это должно быть выражение #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]»?
Добавление: если есть кто-то там, кто имеет достаточную репутацию, вы можете захотеть создать «ракетку» или «racket- схемы ". Пока еще нет, и ребята PLT Scheme пытаются изменить название своего проекта. – Inaimathi
Я добавил тэг для вас. –
Есть ли какая-то особая причина, по которой вы не можете просто (наметить «результат-из-этой-функции»), чтобы получить отрицание? Или это скорее вопрос «Я бы хотел понять, почему это не работает»? – jakebman