我对以下Python正则表达式的语义感到困惑:
r"/actors(\\..+)?"
我浏览了关于正则表达式的Python文档部分,但是无法理解这个表达式。有人能帮我吗?

最佳答案

/        # literal /
actors   # literal actors
(        # starting a subpattern
\\       # (escaped) literal  \
.        # arbitrary character
.+       # 1 or more arbitrary characters
)?       # ends the subpattern and makes it optional

这意味着,它匹配正斜杠、“actors”,然后可选地匹配反斜杠和2个或更多任意字符。
我想这里有个错别字。字符串不应该被标记为原始字符串,或者有一个反斜杠太多。在这两种情况下,都会出现转义.而不是转义\后跟任意字符。这反过来又会匹配名为actors的文件,这些文件的扩展名是任意的或丢失的。
所以要么"/actors(\\..+)?"要么r"/actors(\..+)?"

关于python - Python正则表达式(\.. +)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13021093/

10-12 16:20