当正则表达式工具表明它应该时,python正则表达式不匹配

时间:2014-03-17 13:45:11

标签: python regex

我在脚本中有一个if语句,用于查看通过argparse给出的目录是否为UNC路径。但不会以尾随斜线结束。

import re

#dest is set by argparse. but for this purpose i'll set it manually.
#originally i was escaping each \ in dest. But I found that argparse left them alone.
dest = '\\server-name\folder\subfolder'

if re.match ('^\\+[\w\W]+', dest ) and not re.match( '^\\+[\w\W]+\\$', dest):
    dest = dest + '\\'

我在ipython中一直在玩这个。第一个声明无法匹配。我在Komodo IDE中使用了RxToolkit,它将正则表达式显示为匹配。我尝试了这个webtool:http://www.pythonregex.com/它也匹配。有什么想法吗?

2 个答案:

答案 0 :(得分:5)

您将此传递给re:

^\+[\w\W]+

因为\\表示\。您需要做的是使用r

生成正则表达式字符串
if re.match(r'^\\+[\w\W]+', dest ) and not re.match(r'^\\+[\w\W]+\\$', dest):
            ^                                       ^

答案 1 :(得分:4)

字符串"\\"代表单个反斜杠\

>>> print('\\')
\

您需要转义\或使用原始字符串文字来表示两个反斜杠。

>>> print('\\\\')
\\
>>> print(r'\\')
\\

BTW,re.match检查字符串开头的匹配项;您可以省略前导^