我有以下代码与comments变量中的字符串匹配,如何构造匹配以下所示注释的字符串?我想检查QSPR测试结果:\ siggy。*和测试结果:。*
import re
comments = "QSPR TEST RESULTS:\\siggy\QSPRLog\QCA\CST\2016\3\28\TestCaseLogs\N12345678-3_28_16_16_36_29_000_635947797916487681.html are the results"
#comments = "TEST RESULTS:BT ON\OFF LOOKS GOOD"
def matchcomments(comments, matchstring):
matchobj = re.search(matchstring, str(comments))
if matchobj:
return True
return False
def main ():
try:
string = r"QSPR TEST RESULTS:\\siggy\.*"
match = matchcomments(comments, string)
if match == True:
tested_bit_flag = True
else:
#string = r"Included in BIT"
string = r"DONOT MATCH"
match = matchcomments(comments, string)
if match == True:
tested_bit_flag = True
else:
tested_bit_flag = False
except KeyError:
tested_bit_flag = False
print "This gerrit does not have comments:"
print tested_bit_flag
if __name__ == "__main__":
main()
答案 0 :(得分:1)
comments = "QSPR TEST RESULTS:\\siggy\QSPRLog\QCA\CST\2016\3\28\TestCaseLogs\N12345678-3_28_16_16_36_29_000_635947797916487681.html are the results"
string = r"(?:QSPR)?\s?TEST\sRESULTS:\\siggy\\(.*)|(?:DONOT MATCH)"
matchobj = re.search(string, comments)
if matchobj:
print True
print matchobj.group(1) #Gives you the text you are interested in eg. QSPRLog\QCA\CST\2016\3\28\TestCaseLogs\N12345678-3_28_16_16_36_29_000_635947797916487681.html are the results
else:
print False
说明:
(?:QSPR)?和(?:DONOT MATCH)
(?:)表示非捕获组。这个想法是检查组的存在与否(在这种情况下是QSPR或DONOT MATCH),而不关心匹配是什么(因为我们已经知道它是什么)。最后的问号表示该组是可选的。
?<强> \ S TEST \ sRESULTS:\ siggy \ 强>
这部分只是与给出的文本匹配。
<强>(。*)强>
在群组中捕捉您感兴趣的文字。请注意,这是唯一的(捕获)组,因此当您使用参数1调用匹配对象的group属性时,您将获得您感兴趣的文本。
另请注意,此正则表达式将捕获0个或更多字符。替换为(。+)以捕获1个或多个字符,以确保不空虚。
| 字符表示左侧的表达式或右侧的表达式应匹配。在这种特殊情况下,由于右边的表达式中没有组(?:DONOT MATCH),当comments =“DONOT MATCH”时调用matchobj.group(1)将返回None。请务必稍后在代码中进行检查。
答案 1 :(得分:0)
string = r"(QSPR TEST RESULTS:\\siggy\.*)|(DONOT MATCH)"
使用它。
答案 2 :(得分:0)
如果我理解正确的话:
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: 'pie',
events: {
load: function() {
this.series[0].data[0].select();
this.redraw();
}
}
}
这应与您感兴趣的文字相匹配。