介绍
我正在使用 Haskell 的 Text.Regex
library,我想匹配一些通常在正则表达式中有意义的字符。根据 Text.Regex
的 documentation ,
The syntax of regular expressions is ... that of egrep (i.e. POSIX "extended" regular expressions).
显然,在 POSIX Extended Regular Expressions (ERE) 中逃脱使用反斜杠 [不同于 POSIX Basic Regular Expressions (BRE) ]。
问题
但是,当我尝试做这样的事情时:
> 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
库支持 \
像它应该的那样逃跑?
最佳答案
我不知道语法,但通常如果你想在字符串中写反斜杠,你需要对它进行转义,意思是:
matchRegex (mkRegex "\\*") "*"
它有帮助吗?
关于regex - 如何在 Haskell 的 Text.Regex 库中转义字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7726742/