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