python正则表达式组与反'|'匹配

时间:2012-08-18 05:13:45

标签: python regex

这是我的代码:

import re

p = re.compile('(?P<name>[^|]*)|(?P<desc>[^|]*)')
m = p.match('jack|a good boy')
name = m.group('name')
desc = m.group('desc')
print name  # jack
print desc  # None

如何在'|'之后获得desc?

1 个答案:

答案 0 :(得分:1)

要匹配|,您必须逃避它。否则,您的模式将匹配第一组或最后一组。但是,不是两者兼而有之。

import re

p = re.compile('(?P<name>[^|]*)\|(?P<desc>[^|]*)')
m = p.match('jack|a good boy')
name = m.group('name')
desc = m.group('desc')
print name  # jack
print desc  # a good boy

注意我已经改变了一段代码。刚刚将|转发到\|