在python中使用单词边界的正则表达式

时间:2012-09-20 12:49:48

标签: 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})\)?([\- ]{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)

有什么想法吗?

- 示例 -

(06)12345678 should match, (06)12345678
06 12345678 should match, 06 12345678
1234567890 should match, 1234567890
=12345678 no match

1 个答案:

答案 0 :(得分:2)

在第一个?之前尝试逃避第二个“(”,而不是第一个,最后一个“)”。

现场演示:http://refiddle.com/6bs