gpt4 book ai didi

python - (.*js$) 和 .*(js)$ 有什么区别

转载 作者:太空宇宙 更新时间:2023-11-03 15:13:23 25 4
gpt4 key购买 nike

我正在使用 Tornado 来构建服务器。它基于python,我需要执行以下操作:

application.add_handlers(r"^(www).*",[
(r"/(.*js$)", tornado.web.StaticFileHandler, {'path': 'static/'}),
(r"/(.*xml$)", tornado.web.StaticFileHandler, {'path': 'static/'}),
(r"/(.*css$)", tornado.web.StaticFileHandler, {'path': 'static/'}),
(r"/(.*jpg$)", tornado.web.StaticFileHandler, {'path': 'static/'}),
(r"/(.*png$)", tornado.web.StaticFileHandler, {'path': 'static/'}),
(r"/(.*ico$)", tornado.web.StaticFileHandler, {'path': 'static/'}),
(r"/(.*html$)", tornado.web.StaticFileHandler, {'path': 'static/'}),

(r"/$", IndexHandler),
])

上面的代码将告诉 http 请求它请求的资源的位置。所以这里我告诉一个http请求,它可以获取./static/路径下的js、xml、css、jpg、png、ico和html文件。

它确实工作得很好,但我不太明白正则表达式部分。
如您所见,r"/(.*js$)" 是一个正则表达式,用于匹配 http 请求。如果http请求正在寻找js文件,第一个正则表达式将被匹配,但我不知道如何。

据我了解,如果我想匹配一个js文件,我需要制作一个像这样的正则表达式:r"/.*(js)$",这意味着以js。我尝试过,但没有成功。

那么为什么 (.*js$) 有效呢?难道不是说以一个字母s结尾的文件而不是js结尾的文件吗? .*(js)$(.*js$) 之间有什么区别?此外,^.*abc$.*abc$^.*abc.*(之间有什么区别abc)$, ^.*(abc)?

我一定误解或无法理解正则表达式中关于 ()^$ 的一些规则。

最佳答案

圆括号()表示捕获组。
例如,如果您的地址是 http://www.example.com/something.js
r"/(.*js$)" 将匹配并捕获 www.example.com/something.js
r"/.*(js)$" 也会匹配,但只会捕获 js

我不知道 Tornado 是什么,但我假设它对捕获的地址做了一些事情,所以如果你没有得到整个事情,即使正则表达式匹配,它也不会工作。对于您的其他问题,请尝试查找 here有关基本正则表达式含义的更多信息

关于python - (.*js$) 和 .*(js)$ 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44060952/

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