Ell*_*ron 4 regex haskell escaping posix-ere
我正在使用Haskell的Text.Regex库,我想匹配一些通常在正则表达式中有意义的字符.据Text.Regex的文件,
正则表达式的语法是... egrep的语法(即POSIX"扩展"正则表达式).
显然,在 POSIX扩展正则表达式(ERE)中转义使用反斜杠[与POSIX Basic正则表达式(BRE)不同 ].
但是,当我尝试做这样的事情时:
> import Text.Regex
> matchRegex (mkRegex "\*") "*"
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
<interactive>:1:23:
lexical error in string/character literal at character '*'
Run Code Online (Sandbox Code Playgroud)
无论我在之后放置什么角色,都会发生同样的事情\.
我可以这样做:
> matchRegex (mkRegex "[*]") "*"
Just []
Run Code Online (Sandbox Code Playgroud)
哪个有效,但它似乎是一个黑客,特别是如果我想连续逃脱几件事(例如mkRegex "[[][(][)][]]"哪些匹配[()]).
这是在POSIX ERE中逃脱的唯一途径吗?为什么Haskell的Text.Regex库支持\不像它应该的那样逃避?
我不知道语法,但通常如果你想在字符串中写回斜杠你需要转义它,这意味着:
matchRegex (mkRegex "\\*") "*"
Run Code Online (Sandbox Code Playgroud)
有帮助吗?