我想在Regex
这里有几个.
import Text.Regex
openTag = mkRegex "<([A-Z][A-Z0-9]*)\\b[^>]*>"
closeTag = mkRegex "</\\1>"
any = mkRegex "(.*?)"
Run Code Online (Sandbox Code Playgroud)
openTag ++ any ++ closeTag
< - 仅用于说明目的
我该如何合并它们?具体来说,一个Regex -> Regex -> Regex
功能.或者,转换Regex
回来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
Run Code Online (Sandbox Code Playgroud)
Regex
type中的Text.Regex
C实际上是一个C指针:
data Regex = Regex (ForeignPtr CRegex) CompOption ExecOption
Run Code Online (Sandbox Code Playgroud)
AFAIK在编译之后无法恢复posix正则表达式的字符串表示.regcomp 3手册页.
如果您想以代数方式操作正则表达式,请在您自己的类型中进行换行以推迟编译或使用例如regex-applicative.