如何从应用正则表达式的字符串中删除后缀?



我使用regex-applicative库。

我想删除后缀".end"但只有当它真的是一个后缀(字符串的尾部,而不是字符串的中间),并使用replace

replace (some anySym <* ".end") "start.end"

它工作:"start.end"→时">

但是不能使用"start.end.extra"→"start.extra"(我期待&;start.end.extra&;Result, because ".end"不是后缀more——它在中间)。

我试着:

replace (some anySym <* ".end" *> empty) "start.end"
replace (empty <* some anySym <* ".end" *> empty) "start.end"

和许多其他组合,但它没有像我期望的那样工作。是否可以使用此库删除后缀?

replace用于查找字符串中正则匹配的所有位置,并用其他内容替换它们。你不想这样,所以不要用replace。你有一个正则表达式定义你想要如何塑造整个字符串,所以match正则表达式从匹配中获取信息:

stripEndSuffix :: String -> String
stripEndSuffix =
let findSuffix = match $ some anySym <* string ".end"
in fromMaybe <*> findSuffix

相关内容

  • 没有找到相关文章

最新更新