Я не вижу ничего плохого в вашем синтаксисе регулярных выражений, так как он указан в кавычках, поэтому я предполагаю, что должна быть ошибка в Guile или в используемой им библиотеке регулярных выражений, где \]
просто неверно интерпретируетсявнутренние скобки.Я нашел обходной путь, используя вместо этого значения восьмеричного кода:
(string-match "[A-Za-z\\[\\0135]+" "Text [a,b]")
; ==> #("Text [a,b]" (0 . 4))
Ваше регулярное выражение не очень хорошо.Он соответствует любой комбинации этих символов, поэтому "]/Te,3.xt[2"
также соответствует.Если вы ожидаете строку типа «Что-то [что-то, что-то]», я бы предпочел сделать / [AZ] [a-z0-9] + [[a-z0-9] +, [a-z0-9] +] / вместо.например.
(define pattern "[A-Z][a-z0-9]+ \\[[a-z0-9]+,[a-z0-9]+\\]")
(string-match pattern "Test [q,w]") ; ==> #("Test [q,w]" (0 . 10))
(string-match pattern "Be100 [sub,45]") ; ==> #("Be100 [sub,45]" (0 . 14))