Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Racket正则表达式匹配_Regex_Scheme_Racket - Fatal编程技术网

Regex Racket正则表达式匹配

Regex Racket正则表达式匹配,regex,scheme,racket,Regex,Scheme,Racket,我试图创建一个正则表达式,它与某个字符串类型的倒数匹配(例如,字符串不以“.js”结尾) 根据文档,这应该是表达式#rx“(?!\\\.js$)”,但它似乎不起作用。为了测试它,我有以下功能: (define (match-test regex) (map (lambda (text) (regexp-match? regex text)) '("foo.js" "bar.css" "baz.html" "mumble.gif" "foobar")

我试图创建一个正则表达式,它与某个字符串类型的倒数匹配(例如,字符串不以“.js”结尾)

根据文档,这应该是表达式
#rx“(?!\\\.js$)”
,但它似乎不起作用。为了测试它,我有以下功能:

(define (match-test regex) (map (lambda (text) (regexp-match? regex text)) '("foo.js" "bar.css" "baz.html" "mumble.gif" "foobar"))) (定义(匹配测试正则表达式) (地图(lambda)(文本) (regexp匹配?regex文本)) (“foo.js”“bar.css”“baz.html”“mumble.gif”“foobar”)) 《代码><代码><代码><代码><代码>返回<代码>返回<代码>返回<代码><代码><代码><代码><代码><代码>由于代码>预期预期,但<代码>由于预期预期,但<代码><代码>返回<代码>返回<代码>返回<代码><代码>返回<代码>代码>(#t t测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试测试,测试测试测试测试测试测试测试测试测试测试测试测试测试,测试测试测试测试测试测试测试测试测试测试测试测试,测试,测试测试测试测试,测试,测试,测试测试测试测试,测试,测试测试测试,测试,测试,测试测试测试测试测试,测试,测试,测试,测试,测试,代码>


我做错了什么?我如何在Racket中使用regex来表达“匹配任何不包含[x]的内容”的想法?

您需要锚定负匹配,因为否则它可以成功匹配字符串中的任何位置(如果您愿意,也可以成功不匹配)。您可以将正则表达式锚定到字符串的末尾,并使用负查找来检查最后几个字符。我不熟悉Scheme语法,但我认为您可以使用:

#rx"(?<!\\.js)$"

附录:如果有人有足够的代表性,你可能想创建一个“racket”或“racketscheme”标签。现在还没有,PLT计划的人正在尝试更改他们项目的名称。我为您添加了标签。有什么特殊原因不能(映射此函数的“非”结果)获得否定吗?或者这更像是一个“我想理解为什么这不起作用”的问题;我使用它初始化球拍服务器的特定位置。它有一个名为“servlet regexp”的属性,该属性使用正则表达式来确定要应用分派的URI。如果该属性可以接受一个返回布尔值而不是regexp的函数,我会使用您建议的方法。
#rx"^((?!foo).)*$"