python中带有单词边界的正则表达式

python中带有单词边界的正则表达式,python,regex,Python,Regex,我试图用正则表达式验证一个特定字符串,但是我丢失了第一个字符 字符串是 (06)12345678 我的正则表达式是 r'\b\((0[34679]{1})\)?([\- ]{0,1})[0-9]{3,4}([\- ]{0,1})[0-9]{3,5}' 但我在比赛中得到的只是 06)12345678 我真的很想先(也是) 和是有条件的,因为有时不会有()。 但是单词边界的存在是为了防止像这样的数字 hello123456789 匹配 regex = r'\b\(?(0[34679]{1})

我试图用正则表达式验证一个特定字符串,但是我丢失了第一个字符

字符串是 (06)12345678

我的正则表达式是

r'\b\((0[34679]{1})\)?([\- ]{0,1})[0-9]{3,4}([\- ]{0,1})[0-9]{3,5}'
但我在比赛中得到的只是

06)12345678
我真的很想先(也是)

和是有条件的,因为有时不会有()。 但是单词边界的存在是为了防止像这样的数字

hello123456789 
匹配

regex = r'\b\(?(0[34679]{1})\)?([\- ]{0,1})[0-9]{3,4}([\- ]{0,1})[0-9]{3,5}'
matches = re.finditer(regex, '(06)12345678)')
for match in matches:
    print match.group(0)
有什么想法吗

--例子--

在第一个
之前,尝试转义第二个“(”,不是第一个,而是最后一个“)”


现场演示:

这个网站上的人回答问题的速度如此之快,这太神奇了。你还应该把你的\从第一个
移到第二个
试试:(
r'\b(\(0[34679]{1}\)?…
你可以在这里试试:不太好,它不起作用,我只是得到了12345678它没有包括(06)首先,感谢您的重新填充,但是如果您将其从(06)更改为12345678,那么它就不匹配。()是可选的。因此每个问题上都有/(?。示例添加到问题中。几乎在那里,最后一个不应匹配,这是整个单词边界的所在(请参见OP)。因此=12345678不应匹配
(06)12345678 should match, (06)12345678
06 12345678 should match, 06 12345678
1234567890 should match, 1234567890
=12345678 no match