所以我正在尝试运行一个文件并匹配到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
答案 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