我有以下代码来匹配转义字符串:
match_str = r'''(["/']).*?(?<!\\)(\\\\)*\1'''
test_str = r'''"This is an \"escaped\" string" and this isn't.'''
mo = re.match(match_str, test_str)
if mo:
print mo.group()
效果很好。
然而,虽然我知道我需要那里的小组来处理重复等,但我对在比赛后使用小组不感兴趣。我知道我可以打电话mo.group(0)
并得到整个事情,但是对于我正在做的事情,如果它可以表现得好像在这种情况下没有找到任何组,那将是有帮助的,即mo.groups()
返回(None)
。
有没有办法做到这一点?
编辑:如果有帮助,我正在尝试做这样的事情:
ma = [myclass("regex1nogroups", [func1]),
myclass("regex2twogroups", [func2, func3]),
myclass("regex3fourgroups", [func4, func5, func6, func7]),
myclass("regex4nogroups", [func8])]
for mc in ma:
mo = re.match(mc.pattern, str_to_match)
if mo:
for n in range(len(mc.funclist)):
result = mo.group(n+1 if mo.groups() else 0)
mc.funclist[n](result)
使用函数列表的长度来确定正则表达式应该产生多少组。myclass
如果我只想假设没有组,我可以添加一个额外的标志成员,但最好避免这种情况。