我想定义一个匹配电话号码的重新模式,如
(514) 123-4567
514-123-4567
但它不应该接受像
那样的单括号(514 123-4567
514) 123-4567
我知道我可以使用堆栈修复它,但是如何以纯正则表达式方式解决它?非常感谢。
答案 0 :(得分:1)
我应该这样做:(?:(?:\([0-9]*?\))|(?:[0-9]*))*
答案 1 :(得分:0)
答案 2 :(得分:0)
答案 3 :(得分:0)
你可以试试这个:
import re
s1 = "(514) 123-4567"
s2 = "514-123-4567"
a = [s1, s2]
numbers = [re.findall("(\(\d{3}\)\s\d{3}-\d{4})|(\d{3}-\d{3}-\d{4})", i) for i in a]
final_numbers = [[b for b in i if b][0][0] for i in numbers if i]