我尝试使用库regex-applicative。
我的代码是:
nicBeg = ((psym $ not . isSpace) $> (few anySym <> " adapter ")) *> some anySym
result = match nicBeg "abcd adapter NIC 1"
我 认为result
是 的Just "bcd adapter NIC 1"
.
但文献记载*>
表明:
*> :: forall (f :: Type -> Type) a b.Applicative f => fa -> fb -> fb
在‘GHC.Base’(base-4.16.4.0)中定义的
序列动作,丢弃第一个参数的值。
那么,问题是:为什么“bcd 适配器”部分存在于result
而不是只有“NIC 1”(它没有被丢弃)?是库的问题还是我哪里错了?
PS. 该库具有“贪婪” RE 表达式的概念。
PS. 很容易得到预期的结果:(((psym $ not . isSpace) *> (few anySym <> " adapter ")) *> some anySym
即替换$>
为*>
)