Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中重新匹配失败,与regex101上的结果混淆_Python_Regex - Fatal编程技术网

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

在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。

,在这里测试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
。例如,在我的控制台上,它是一个小微笑

如果您不知何故不想将字符串变粗,则必须避开反斜杠:

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。在代码中实现这一点并不一定意味着您会将其完全放在原处。