背景
假設我在這裏有幾個Regex
。如何合併Regex?
import Text.Regex
openTag = mkRegex "<([A-Z][A-Z0-9]*)\\b[^>]*>"
closeTag = mkRegex "</\\1>"
any = mkRegex "(.*?)"
問題
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
不要你的意思是'正則表達式 - >正則表達式 - > Regex'? – Zeta 2015-02-10 15:04:56
@Zeta是的,謝謝:) – Gavin 2015-02-10 15:10:09
你不是真的想使用正則表達式的HTML/XML,是嗎?因爲沒有。 – dfeuer 2015-02-10 15:16:22