【发布时间】:2010-05-22 16:57:23
【问题描述】:
我正在尝试创建一个匹配某个字符串类型的逆的正则表达式(例如,字符串不以“.js”结尾)。
根据文档,这应该是表达式#rx"(?!\\.js$)",但它似乎不起作用。为了测试它,我有这个功能:
(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] 的内容”的想法?
【问题讨论】:
-
附录:如果有人有足够的代表,你可能想创建一个“球拍”或“球拍方案”标签。目前还没有,PLT 计划的人正在尝试更改他们的项目名称。
-
我为你添加了标签。
-
有什么特别的原因你不能仅仅(映射而不是'这个函数的结果)得到否定吗?或者这更像是一个“我想了解为什么这不起作用”的问题?
-
是的;我使用它来初始化 Racket Server 的特定位置。它有一个名为“servlet-regexp”的属性,它采用正则表达式来确定将调度应用到哪些 URI。如果该属性可以采用返回布尔值而不是正则表达式的函数,我会使用您建议的方法。