python - RE 匹配在 python 中失败,与 regex101 上的结果混淆

标签 python regex

http://regex101.com/r/oU6eI5/1 ,在这里测试接缝是否有效,但是当我输入 Python 时,匹配整个字符串。

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

我想得到“tweqt/”

最佳答案

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

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

否则,您将获得转义字符 \1。例如,在我的控制台上,它有点笑脸。

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

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

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

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

其他注意事项

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

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

您可能想使用 str 以外的另一个变量名,因为这将覆盖现有函数 str()

关于python - RE 匹配在 python 中失败,与 regex101 上的结果混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25620233/

相关文章:

java - 在正则表达式中匹配电话号码

javascript - 获取正则表达式中这些短语之一之后的所有内容?

regex - 用换行符/段落标记替换所有空格以制作单词列表

java - 获取正则表达式匹配后的文本

python - 如何在 Pytest 参数化 ids 中显示非 ascii 字符

python - rhel 5.4 中的 salt 安装

python - 清理从 Flask MethodView API 启动的长时间运行的子进程

python - Save.numpy masked array to a .numpy array with NaNs where mask == True

python - 如何使用 Mechanize cookie 获取 http 页面?

正则表达式更改为句子大小写