regex - 如何在 Haskell 的 Text.Regex 库中转义字符?

标签 regex haskell escaping posix-ere

介绍

我正在使用 Haskell 的 Text.Regex library,我想匹配一些通常在正则表达式中有意义的字符。根据 Text.Regexdocumentation ,

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/

相关文章:

escaping - 如何在 Zebra 编程语言中打印脱字符 (^) 字符?

haskell - 打印时为多态表达式选择什么类型?

haskell - 覆盖 Haskell 中封装不良的实例

php - 维护未被 javascript escape() 函数转义的字符

regex - Firestore 对文档 ID 的约束的 reg 表达式是什么?

parsing - 秒差距解析许多问题

javascript - 无法将变量作为 onClick 函数中的参数传递

python - 如何使用正则表达式判断字符串的第一个和最后一个字符是否匹配?

regex - 试图在 shell 脚本中 grep 部分文件名?

python - Python 中的正则表达式匹配数字