我想在Haskell
中使用regex将latex命令替换为字符我尝试在ghci中进行以下正则表达式替换:
> putStrLn $
subRegex (mkRegex "(\\mbfA)([^[:alnum:]])") "\\mbfA \\mbfAlpha" "o\\2"
得到这个结果:
\o \mbfAlpha
这不是我想要的,我想要的是o \mbfAlpha
。
在Python中,我可以得到我想要的东西:
In [7]: print(re.sub(r"(\\mbfA)(\W)", "o\\2", "\\mbfA \\mbfAlpha"))
o \mbfAlpha
在Haskell中有什么办法可以用包含反斜杠的正则表达式替换字符串吗?
答案 0 :(得分:5)
在你的python中,你有一个原始字符串:r"(\\mbfA)(\W)"
- 这意味着反斜杠只是一个反斜杠,而不是转义字符。
然而,在你的Haskell代码中,你需要使用反斜杠转义反斜杠,当你需要在正则表达式中使用双反斜杠时,你需要在字符串中使用四个反斜杠。因此,这应该有效:
makeRegex "(\\\\mbfA)([^[:alnum:]])" :: Regex