我有一个正则表达式,有两个组是OR'd,我想知道如果一个组匹配的话,是否有可能让一个组作为一个反向引用?在所有情况下,我都想匹配spam.eggs.com网站
示例:
import re
monitorName = re.compile(r"HQ01 : HTTP Service - [Ss][Rr][Vv]\d+\.\w+\.com:(\w+\.\w+\.(?:net|com|org))|(\w+\.\w+\.(?:net|com|org))")
test = ["HQ01 : HTTP Service - spam.eggs.com",
"HQ01 : HTTP Service - spam.eggs.com - DISABLED",
"HQ01 : HTTP Service - srv04.example.com:spam.eggs.com",
"HQ01 : HTTP Service - srv04.example.com:spam.eggs.com - DISABLED"]
for t in test:
m = monitorName.search(t)
print m.groups()
产生:
^{pr2}$如果我的组只返回一个匹配的组而不是两个都返回,那就太好了。在
|
运算符具有优先权,因此它适用于之前的所有所有(在本例中,从regex的开头开始)或其后的所有内容。在正则表达式中,如果没有“srv04”。example.com网站,它不检查字符串是否包含“HTTP服务”!在你的两个捕获组是相同的,所以没有必要同时拥有它们。你只想让
srv*:
部分可选,对吧?在试试这个:
使用
m.group(1) or m.group(2)
。在相关问题 更多 >
编程相关推荐