我正在使用Haskell的Text.Regex
库,我希望匹配一些通常在正则表达式中有意义的字符。根据{{1}}的{{3}},
正则表达式的语法是...... egrep的语法(即 POSIX“扩展”正则表达式。)
显然,documentation中的转义使用反斜杠[与POSIX Extended Regular Expressions (ERE)不同]。
然而,当我尝试做这样的事情时:
Text.Regex
我收到以下错误:
> import Text.Regex
> matchRegex (mkRegex "\*") "*"
无论我在<interactive>:1:23:
lexical error in string/character literal at character '*'
之后放置什么字符,都会发生同样的事情。
我可以这样做:
\
有效,但看起来像是黑客,特别是如果我想连续逃脱几件事(例如> matchRegex (mkRegex "[*]") "*"
Just []
匹配mkRegex "[[][(][)][]]"
)。
这是在POSIX ERE中逃脱的唯一途径吗?为什么Haskell的[()]
库支持Text.Regex
没有像它应该的那样逃避?
答案 0 :(得分:7)
我不知道语法,但通常如果你想在字符串中写回斜杠你需要转义它,意思是:
matchRegex (mkRegex "\\*") "*"
有帮助吗?
答案 1 :(得分:3)
尝试使用两个反斜杠:
matchRegex (mkRegex "\\*") "*"
我刚用GHCI尝试了它,但它确实有效。