首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >core.match模式中的优先级

core.match模式中的优先级
EN

Stack Overflow用户
提问于 2013-07-15 09:33:09
回答 2查看 195关注 0票数 0

在我的core.match模式中,我希望一个特定的模式具有“高优先级”。例如:

代码语言:javascript
复制
(match 
[paragraph line     text     is-special ]
[_      _   #"^\s*$" _      ] "empty"       
[0      0   _    false      ] "project-header"
[0      _   _    false      ] "project-header-note"
[1      _   _    false      ] "next-action"
[2      _   _    false      ] "following-action"
:else "generic"))

我希望"empty"行中的text变量总是在匹配时停止后续匹配,并返回"empty“。但是,可能是因为这个子句更通用,所以它尝试将其作为最后一个子句,并与另一个子句匹配。

EN

回答 2

Stack Overflow用户

发布于 2013-07-15 10:45:17

lives对正则表达式的支持位于一个单独的名称空间clojure.core.match.regex中。你需要在你的函数编译之前需要它,这样它才能以你所期望的方式工作。最简单、最容易、最不容易出错的方法是在定义函数的命名空间的ns子句中添加适当的:require子句。

此外,模式匹配总是按顺序尝试子句。如果您从一个不同于预期的子句中获得返回值,这意味着该子句实际上与您的参数不匹配。

票数 3
EN

Stack Overflow用户

发布于 2013-07-15 10:15:34

据我所知,core.match不以任何“特殊”的方式支持正则表达式作为匹配变量。也就是说,如果text实际上是一个正则表达式,那么您的第一个子句可能会匹配,但是如果它是一个与正则表达式匹配的字符串,那么它将失败。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17645549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档