只匹配一个(正则表达式与量词和python中的分组)

时间:2014-02-02 02:45:24

标签: regex

使用python中的量词和分组进行正则表达式

p = re.compile('[29]{1}')
p.match('29')

为什么29匹配p?我以为我用{1}量词明确表示它是[29](2或9)。 不应该只是2或9吗?或者它与第一组匹配,而不关心其余组 谢谢!

1 个答案:

答案 0 :(得分:2)

它匹配,因为它匹配子字符串'2'。正则表达式的工作方式是,如果匹配的字符串中存在任何子字符串,则返回true。您正在使用的正则表达式将匹配'46657467562374746',因为它包含'2'。如果您需要从头到尾匹配整个事物,则需要使用锚点:

p = re.compile('^[29]{1}$')
p.match('29')

hat(^)表示字符串的开头,dollar($)表示字符串的结尾。所以现在这只会匹配整个 sting是单个2还是单个9,而不仅仅是包含 a 2或9。