Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell中的转义PCRE元字符_Haskell_Escaping_Pcre - Fatal编程技术网

Haskell中的转义PCRE元字符

Haskell中的转义PCRE元字符,haskell,escaping,pcre,Haskell,Escaping,Pcre,Haskell PCRE库是否提供了一个函数来转义字符串中的regex元字符?也就是说,一个函数将“[$100]”这样的字符串转换成“\[\$100\]” 我正在寻找Python的等价物,这在regex pcre中似乎找不到。我在任何一个函数中都不知道有这样的函数 PCRE库,但取决于 你正在努力完成你可以使用的任务 PCRE报价: {-# LANGUAGE OverloadedStrings #-} import qualified Data.ByteString.Char8 as B im

Haskell PCRE库是否提供了一个函数来转义字符串中的regex元字符?也就是说,一个函数将“[$100]”这样的字符串转换成“\[\$100\]”


我正在寻找Python的等价物,这在regex pcre中似乎找不到。

我在任何一个函数中都不知道有这样的函数 PCRE库,但取决于 你正在努力完成你可以使用的任务 PCRE报价:

{-# LANGUAGE OverloadedStrings #-}

import qualified Data.ByteString.Char8 as B
import Text.Regex.PCRE


quotePCRE bs = B.concat [ "\\Q" , bs , "\\E" ]

-- Of course, this won't work if the
-- string to be quoted contains `\E` ,
-- but that would be much eaiser to fix
-- than writing a function taking into
-- account all the necessary escaping.

literal = "^[$100]$"

quoted = quotePCRE literal

main :: IO ()
main = do B.putStr "literal: " >> B.putStrLn literal

          -- literal: ^[$100]$

          B.putStr "quoted: "  >> B.putStrLn quoted

          -- quoted: \Q^[$100]$\E

          putStrLn "literal =~ literal :: Bool"
          print ( literal =~ literal :: Bool )

          -- literal =~ literal :: Bool
          -- False

          putStrLn "literal =~ quoted :: Bool"
          print ( literal =~ quoted :: Bool )

          -- literal =~ quoted :: Bool
          -- True