gpt4 book ai didi

regex - Racket 原弦

转载 作者:行者123 更新时间:2023-12-04 00:09:42 25 4
gpt4 key购买 nike

在 Racket 中,您必须转义字符串中的反斜杠,因此 Windows 路径和正则表达式变得冗长。

For example, the regular expression (.*)\1 can be represented with the string "(.*)\\1" or the regexp constant #rx"(.*)\\1"; the \ in the regular expression must be escaped to include it in a string or regexp constant. [Source: Regexp Syntax]

在许多语言中,如 Perl 和 Ruby,正则表达式在句法上得到支持 /\([a-z]+\)/,在其他语言中有可选的 raw strings ,就像在 Python r"\([a-z]+\)" 中一样。似乎 Racket 不支持原始字符串,您不需要在本地转义反斜杠。有没有什么方法可以实现它们,第三方库,提案等等?

另见:

最佳答案

正如 Chris 提到的,自定义阅读器可以做到这一点。

您可以使用 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."

我喜欢用 ~a这是因为它可以将任何内容转换为字符串,而且只需输入两个字符。

但是对于您的正则表达式示例,您不能使用 ~a#rx。相反,您应该使用 regexp:

@regexp{(.*)\1}
;; #rx"(.*)\\1"

在所有这些示例中,@function{string} 基本上被读作 (function "string")。您可以在 at-exp 和 Scribble 的文档中阅读一些细微差别。

关于regex - Racket 原弦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22595853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com