米国の電話番号の形式に合わせてコードを書いています
したがって、一致するはずです:
123-333-1111
(123)111-2222
123-2221111
ただし、1232221111 と一致するべきではありません
matchThreeDigits = r"(?:\s*\(?[\d]{3}\)?\s*)"
matchFourDigits = r"(?:\s*[\d]{4}\s*)"
phoneRegex = '('+ '('+ matchThreeDigits + ')' + '-?' + '('+ matchThreeDigits + ')' + '-?' + '(' + matchFourDigits + ')' +')';
matches = re.findall(re.compile(phoneRegex),line)
問題は、() または '-' の少なくとも 1 つがパターンに存在することを確認する必要があることです (または、電話番号ではなく 9 桁の数字である可能性があります)。効率上の理由から、別のパターン検索を行いたくありません。この情報を正規表現パターン自体に収容する方法はありますか。