gpt4 book ai didi

regex - 用 CL-PPCRE 匹配行尾

转载 作者:行者123 更新时间:2023-12-01 07:23:28 24 4
gpt4 key购买 nike

我有一个相当简单的正则表达式,它在我的 Ruby 代码中工作得很好,但拒绝在我的 Lisp 代码中工作。我只是想匹配一个 URL(斜杠后跟一个单词,仅此而已)。这是我在 Ruby 中使用的正则表达式:^\/\w*$
我想要这个匹配 "/""/foo"但不是 "/foo/bar"
我尝试了以下方法:

(cl-ppcre:scan "^/\w*$" "/") ;works
(cl-ppcre:scan "^/\w*$" "/foo") ;doesn't work!
(cl-ppcre:scan "^/\w*$" "/foo/bar") ;works, ie doesn't match

有人可以帮忙吗?

最佳答案

默认情况下,反斜杠 (\) 字符是 single escape character :它可以防止对其后的字符进行任何特殊处理,因此它可用于在字符串文字中包含双引号( " ),如 "\"" .

因此,当您传递文字字符串 "^/\w*$" 时至 cl-ppcre:scan ,传递的实际字符串将为 "^/w*$" ,即反斜杠将被删除。您可以通过评估 (cl-ppcre:scan "^/\w*$" "/w") 来验证这一点。 ,这将匹配。

要在正则表达式中包含反斜杠字符,您需要像这样引用它:"^/\\w*$" .

如果您经常使用文字正则表达式,则所需的字符串引用可能会变得乏味且难以阅读。看看CL-INTERPOL对于为 Lisp 阅读器添加更好的正则表达式语法的库。

关于regex - 用 CL-PPCRE 匹配行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53939960/

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