在python中重新匹配失败,与regex101上的结果混淆
,在这里测试seam是有效的,但当我输入Python时,匹配整个str在python中重新匹配失败,与regex101上的结果混淆,python,regex,Python,Regex,,在这里测试seam是有效的,但当我输入Python时,匹配整个str str = galley/files/tew/tewt/tweqt/ re.sub('^.+/+([^/]+/$)', "\1", str) 我要获取“tweqt/”您需要在替换中使用原始字符串: str = galley/files/tew/tewt/tweqt/ re.sub('^.+/+([^/]+/$)', r"\1", str) # ^ 否则,将获得转义字符\1。
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)
还值得注意的是,原始regex字符串并使用一致的引号是一种很好的做法,因此我建议您使用:
re.sub(r'^.+/+([^/]+/$)', r'\1', str)
其他注释 匹配(使用
re.search
)而不是使用re.sub
,可能更简单:
re.search(r'[^/]+/$', str).group()
# => tweqt/
您可能希望使用除
str
之外的另一个变量名,因为这将覆盖现有函数str()
,您需要在替换中使用原始字符串:
str = galley/files/tew/tewt/tweqt/
re.sub('^.+/+([^/]+/$)', r"\1", str)
# ^
否则,将获得转义字符\1
。例如,在我的控制台上,它是一个小微笑
如果您不知何故不想将字符串变粗,则必须避开反斜杠:
re.sub('^.+/+([^/]+/$)', "\\1", str)
还值得注意的是,原始regex字符串并使用一致的引号是一种很好的做法,因此我建议您使用:
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/'
最好将模式或正则表达式定义为原始字符串
>>> import re
>>> s = "galley/files/tew/tewt/tweqt/"
>>> m = re.sub(r'^.+/+([^/]+/$)', r'\1', s)
^ ^
>>> m
'tweqt/'
很好,谢谢。regex101生成的代码未命中“r”@soneedu,不完全正确。regex101只提供原始regex。在代码中实现这一点并不一定意味着你会把它完全放在原处。regex101生成的代码未命中“r”@soneedu,不完全正确。regex101只提供原始regex。在代码中实现这一点并不一定意味着您会将其完全放在原处。