Haskell中的转义PCRE元字符
Haskell PCRE库是否提供了一个函数来转义字符串中的regex元字符?也就是说,一个函数将“[$100]”这样的字符串转换成“\[\$100\]”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
我正在寻找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