Python模式匹配问题

2024-04-18 13:05:00 发布

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

我有以下两条线

root = 'svn\\456'
dir = 'svn\\456\\765'

pattern = re.compile('^'+root)
matched = pattern.match(dir)

我总是找不到匹配的。但如果我真的喜欢跟随

root = 'svn\\456'
dir = 'svn\456\\765'

pattern = re.compile('^'+root)
matched = pattern.match(dir)

我被认为是真的

对不起,如果这是一个基本的东西,我在这里错过了。但我只是从python开始

谢谢


Tags: rematchdirsvnrootpatterncompilematched
2条回答

使用'svn\\456'作为模式的问题是\是一个需要转义的特殊字符,因此如果将第一个模式更改为:'svn\\\\456',您将得到一个匹配:

import re
root = 'svn\\\\456'
dir = 'svn\\456\\765'

pattern = re.compile('^'+root)
matched = pattern.match(dir) # matched!

您有一个文本字符串,您正试图使用它来创建regex对象。它包含一个必须转义的特殊正则表达式字符

你需要使用^{}函数

这是一个IDEONE demo

import re
root = r'svn\456'
dir = r'svn\456\765'

pattern = re.compile('^'+re.escape(root))
matched = pattern.match(dir)
print(matched)

相关问题 更多 >