python中的重新匹配失败,与regex101上的结果混淆

2024-09-29 19:25:49 发布

您现在位置:Python中文网/ 问答频道 /正文

http://regex101.com/r/oU6eI5/1,在这里测试seam可以工作,但是当我放入Python时,匹配整个str

str = galley/files/tew/tewt/tweqt/
re.sub('^.+/+([^/]+/$)', "\1", str) 

我要“tweqt/”


Tags: recomhttpfilesstrseamregex101tew
2条回答

您需要在替换中使用原始字符串:

str = galley/files/tew/tewt/tweqt/
re.sub('^.+/+([^/]+/$)', r"\1", str)
#                        ^

否则,将得到转义字符\1。例如在我的主机上,它是一个小笑脸。在

如果您不想对字符串进行原始处理,则必须转义反斜杠:

^{pr2}$

另外值得注意的是,对正则表达式字符串进行原始处理并使用一致的引号是一种很好的做法,因此我建议您使用:

re.sub(r'^.+/+([^/]+/$)', r'\1', str)

其他注意事项

匹配(使用re.search)而不是使用re.sub可能更简单:

re.search(r'[^/]+/$', str).group()
# => tweqt/

您可能希望使用str之外的另一个变量名,因为这将覆盖现有函数str()。在

最好将模式或正则表达式定义为原始字符串。在

>>> import re
>>> s = "galley/files/tew/tewt/tweqt/"
>>> m = re.sub(r'^.+/+([^/]+/$)', r'\1', s)
               ^                  ^
>>> m
'tweqt/'

相关问题 更多 >

    热门问题