Issue
This is my try, it actually put the first and seconds groups of 3 digits between parenthesis while I only need to put the first group only between parenthesis to meet US phone number formal format like (XXX) XXX-XXXX. I am asked to do this using re.sub only which means it is a pattern matter and correct syntax which I am missing actually. Thank you very much.
import re
def convert_phone_number(phone):
result = re.sub(r"(\d+-)", r"(\1)", phone) # my actual pattern - change only this line
return result
print(convert_phone_number("My number is 212-345-9999.")) # output should be: My number is (212) 345-9999.
# my actual output: My number is (212-)(345-)9999.
print(convert_phone_number("Please call 888-555-1234")) # output should be: Please call (888) 555-1234
# my actual output: Please call (888-)(555-)1234
Solution
You may use
re.sub(r'(?<!\S)(\d{3})-', r'(\1) ', phone)
See regex demo
Details
(?<!\S)
- a left-hand whitespace boundary(\d{3})
- Capturing group #1: three digits-
- a hyphen.
The replacement is the Group 1 value inside round brackets and a space after (that will replace the hyphen).
Answered By - Wiktor Stribiżew
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.