Mir*_*lov 2 regex string rawstring racket
在Racket中,您必须在字符串中转义反斜杠,因此Windows路径和正则表达式变得冗长.
例如,正则表达式
(.*)\1可以用字符串"(.*)\\1"或正则表达式常量表示#rx"(.*)\\1"; 必须转义正则表达式中的\才能将其包含在字符串或regexp常量中.[来源:Regexp语法 ]
在许多语言中,如Perl和Ruby正则表达式在语法上受支持/\([a-z]+\)/,在其他语言中有可选的原始字符串,如在Python中r"\([a-z]+\)".似乎Racket不支持原始字符串,在本地你不需要逃避反斜杠.是否有任何方法来实现它们,第三方库,提案,等等?
也可以看看:
正如克里斯提到的,定制读者可以做到这一点.
您可以使用的Racket已经提供的阅读器示例如下at-exp:
#lang at-exp racket
@~a{C:\Windows\win.ini}
;; "C:\\Windows\\win.ini"
@~a{This is a string
with newlines.}
;; "This is a\nstring with newlines."
Run Code Online (Sandbox Code Playgroud)
我喜欢使用~a它,因为它将任何东西转换为字符串,并且只需键入两个字符.
但是对于正则表达式示例,您不能使用~a或#rx.相反,你应该使用regexp:
@regexp{(.*)\1}
;; #rx"(.*)\\1"
Run Code Online (Sandbox Code Playgroud)
在所有这些例子中,基本上都@function{string}被理解为(function "string").您可以在at-expScribble 的文档中阅读一些细微差别.
| 归档时间: |
|
| 查看次数: |
348 次 |
| 最近记录: |