import re
regex = r"(?<!\S )\d {1,4}(?:-\d {1,4})+(?!\S )"
test_str = ( "In the US 555-0198 and 1-206-5705-0100 are examples fictitious numbers.\n "
" In the UK, 044-113-496-1834 is a fictitious number.\n "
" In Ireland, the number 353-020-917-1234 is fictitious.\n "
" And in Australia, 061-970-654-321 is a fictitious number.\n "
" 311 is a joke." )
result = re .sub (
regex,
lambda x: re .sub ( r'\d ' , '0' , x.group ( ) )
if len ( x.group ( ) .replace ( '-' , '' ) ) in ( 7 , 11 , 12 , 13 ) else x.group ( ) , test_str
)
print ( result)
aW1wb3J0IHJlCgpyZWdleCA9IHIiKD88IVxTKVxkezEsNH0oPzotXGR7MSw0fSkrKD8hXFMpIgoKdGVzdF9zdHIgPSAoIkluIHRoZSBVUyA1NTUtMDE5OCBhbmQgMS0yMDYtNTcwNS0wMTAwIGFyZSBleGFtcGxlcyBmaWN0aXRpb3VzIG51bWJlcnMuXG4iCiAgICAgICAgICAgICIgICAgICAgICAgICBJbiB0aGUgVUssIDA0NC0xMTMtNDk2LTE4MzQgaXMgYSBmaWN0aXRpb3VzIG51bWJlci5cbiIKICAgICAgICAgICAgIiAgICAgICAgICAgIEluIElyZWxhbmQsIHRoZSBudW1iZXIgMzUzLTAyMC05MTctMTIzNCBpcyBmaWN0aXRpb3VzLlxuIgogICAgICAgICAgICAiICAgICAgICAgICAgQW5kIGluIEF1c3RyYWxpYSwgMDYxLTk3MC02NTQtMzIxIGlzIGEgZmljdGl0aW91cyBudW1iZXIuXG4iCiAgICAgICAgICAgICIgICAgICAgICAgICAzMTEgaXMgYSBqb2tlLiIpCgpyZXN1bHQgPSByZS5zdWIoCiAgICByZWdleCwKICAgIGxhbWJkYSB4OiByZS5zdWIocidcZCcsICcwJywgeC5ncm91cCgpKQogICAgaWYgbGVuKHguZ3JvdXAoKS5yZXBsYWNlKCctJywgJycpKSBpbiAoNywgMTEsIDEyLCAxMykgZWxzZSB4Lmdyb3VwKCksIHRlc3Rfc3RyCikKCnByaW50KHJlc3VsdCk=