regex Python中带单词边界的正则表达式

p8h8hvxi  于 2023-05-08  发布在  Python
关注(0)|答案(1)|浏览(109)

我试图用正则表达式验证一个特定的字符串,但是我丢失了第一个字符。
字符串是(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
6ojccjat

6ojccjat1#

尝试转义第一个?之前的第二个“(“,不是第一个,而是最后一个“)”。
现场演示:https://regex101.com/r/5h3FBr/1

相关问题