首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python正则表达式(\..+)?

Python正则表达式(\..+)?
EN

Stack Overflow用户
提问于 2012-10-23 06:50:35
回答 3查看 478关注 0票数 2

我对以下Python正则表达式的语义感到困惑:

r"/actors(\\..+)?"

我查阅了Python文档中关于正则表达式的部分,但是不能理解这个表达式。有人能帮帮我吗?

EN

回答 3

Stack Overflow用户

发布于 2012-10-23 06:58:34

代码语言:javascript
复制
/        # literal /
actors   # literal actors
(        # starting a subpattern
\\       # (escaped) literal  \
.        # arbitrary character
.+       # 1 or more arbitrary characters
)?       # ends the subpattern and makes it optional

这意味着,它匹配正斜杠、‘actor’,然后可选地匹配反斜杠和2个或更多任意字符。

我想这里有一个打字错误。要么字符串不应该被标记为raw,要么是有一个反斜杠太多。在这两种情况下,都会有一个转义的.,而不是一个转义的\,后面跟着一个任意字符。这反过来将匹配文件,称为actors,具有任意或缺少的文件扩展名。

所以不是"/actors(\\..+)?"就是r"/actors(\..+)?"

票数 6
EN

Stack Overflow用户

发布于 2012-10-23 06:59:56

代码语言:javascript
复制
\\..+

在这里,\\是一个转义的\字符,所以它确实与那个字符完全匹配。下面是一个可以匹配任何字符的.,后面是另一个必须至少出现一次(或更频繁出现)的.。因此..+将匹配两个或更多个字符。\\..+将匹配任何两个或更多字符,并以反斜杠为前缀。

代码语言:javascript
复制
(\\..+)?

所有这一切都在一个可选的捕获组中,这意味着这一切也可以被省略。

请注意,表达式可能是错误的。看起来您正在尝试匹配某种类型的URL,并希望匹配由.字符引入的文件扩展名。但是,原始加引号的字符串r" "中的\\将匹配\字符,并且不会转义点本身。因此,您可能需要r"/actors(\..+)?""/actors(\\..+)?"

票数 1
EN

Stack Overflow用户

发布于 2012-10-23 06:58:41

它的意思是:字符串/actors,后面跟一个可选的捕获组,其中包含一个文字.,然后是一个或多个非文字.配置为匹配的内容。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13021093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档