我正在为正则表达式寻找一个长字符串中的波兰语电话号码。可能有+48
,0048
,48
(在括号中不是)后跟9位数字,其间有空格。波兰语电话号码的正例表达式
的第一个想法是:
(\(?(\+|00)?48\)?)?[ -]?\d{3}[ -]?\d{3}[ -]?\d{3}
这捕获之类的东西+48 123 456 789
和123456789
,但也将在1234567899876543211
发现2个电话号码 - 这是不能接受的。所以我加了字边界:
\b(\(?(\+|00)?48\)?)?[ -]?\d{3}[ -]?\d{3}[ -]?\d{3}\b
但这个表达式,在一个字符串,如(+48) 123 456 789
只捕获48) 123 456 789
。为什么被忽略?
(regex101与应匹配什么例子/不应该匹配)
空间是否总是三个一组? –
@WillemVanOnsem对于一些错误消息,我很确定,所以是的,我们可以做出这个假设。 – maestromusica
这是由于字边界,将其移动到数字。在非字字符之前,添加'\ B'。 –