假设我在Regex
这里有几个。
import Text.Regex
openTag = mkRegex "<([A-Z][A-Z0-9]*)\\b[^>]*>"
closeTag = mkRegex "</\\1>"
any = mkRegex "(.*?)"
openTag ++ any ++ closeTag
<-仅用于说明目的
如何合并它们?具体来说就是一个Regex -> Regex -> Regex
功能。或者,将Regex
back转换为String
会很好。
openTag ++ "hello" ++ closeTag
<-仅用于说明目的
因此,我可以Regex -> String -> Regex
最终创建自己的功能。
处理字符串文字。
import Text.Regex
openTag = "<([A-Z][A-Z0-9]*)\\b[^>]*>"
closeTag = "</\\1>"
any = "(.*?)"
tagWithAny = mkRegex $ openTag ++ any ++ closeTag
tagWith :: String -> Regex
tagWith s = mkRegex $ openTag ++ s ++ closeTag
Regex
输入Text.Regex
实质上是一个C指针:
data Regex = Regex (ForeignPtr CRegex) CompOption ExecOption
AFAIK在编译后无法恢复posix regex的字符串表示形式。regcomp 3手册页。
如果您想对代数进行正则表达式运算,则将其包装在您自己的类型中以推迟编译或使用regex-applicative。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句