这是我的尝试,它实际上将第一组和第二组的 3 位数字放在括号之间,而我只需要将第一组放在括号之间即可满足美国电话号码的正式格式,如 (XXX) XXX-XXXX。我被要求仅使用 re.sub 来执行此操作,这意味着我实际上缺少的是模式问题和正确的语法。非常感谢。
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
原文由 user13824946 发布,翻译遵循 CC BY-SA 4.0 许可协议
你可以使用
查看 正则表达式演示
细节
(?<!\S)
- 左侧空白边界(\d{3})
- 捕获组#1:三位数-
- 一个连字符。替换是圆括号内的第 1 组值和后面的空格(将替换连字符)。