Python正则表达式不会匹配或转义反斜杠

时间:2016-06-02 14:57:06

标签: python regex python-2.7

所以我正在尝试运行一个文件并匹配到python中的一行,我理解正则表达式,但由于某种原因我不能让这个工作。

 p1 = re.compile("\s*(service_description)\s*([A-Z]:\\\s*Drive\s*Space)")
 for x in cfg: #cfg is an array of everyline in the file
       if p1.match(x):
            print(p1.match(x).group(2))

它在pythex中运行良好,但是当我运行我的脚本时,我无法让它匹配。它我尝试了不同的组合,但第二次我添加\ in(试图得到一个文字'\'它停止匹配。

作为参考,我想要匹配的是

        service_description     M:\ Drive Space

其中M也可以是任何字母大写字母A-Z

1 个答案:

答案 0 :(得分:0)

看起来你正在尝试匹配文字\而不考虑字符串被转义的次数。在进入re模块之前,使用r“literal string”以避免对模式进行任何转义会更容易

import re
line = "service_description     M:\ Drive Space"

pattern = "\s*(service_description)\s*([A-Z]:\\\s*Drive\s*Space)"
print "your pattern:   ", pattern

pattern = r"\s*(service_description)\s*([A-Z]:\\\s*Drive\s*Space)"
print "what you wanted:", pattern

p1 = re.compile(pattern)
match = p1.match(line)
print match
if match:
    print match.group(2)

输出:

your pattern:    \s*(service_description)\s*([A-Z]:\\s*Drive\s*Space)
what you wanted: \s*(service_description)\s*([A-Z]:\\\s*Drive\s*Space)
<_sre.SRE_Match object at 0x028D3DA0>
M:\ Drive Space