147. 【应-20-2·难】手机号身份证混合识别
中等
Python
📋 题目描述
从一段文本里识别中国大陆手机号与身份证号,并分别计数。
- 手机号:`1[3-9]\d{9}`,恰好 11 位数字;
- 身份证号:18 位,前 17 位数字,末位为数字或大小写字母 `X`,即 `\d{17}[0-9Xx]`;
- 数字两侧不允许再紧挨数字(即用非数字边界判定),避免长串里截取错误;
- 身份证不会被算作手机号,反之亦然(注意先识别身份证再识别手机号能避免冲突)。
输出固定一行:`PHONE:数量 ID:数量`。
📥 输入描述
第一行整数 N(1<=N<=200)。
接下来 N 行任意文本。
📤 输出描述
单行:`PHONE:p ID:c`,其中 p 为手机号数量,c 为身份证数量。
输入样例
2 Phone 13812345678 and 13987654321 ID: 110101199003078888
输出样例
PHONE:2 ID:1
提示:先 `re.findall(r"(?<!\d)\d{17}[0-9Xx](?!\d)", text)` 抽身份证;
把抽到的部分从原文替换成空格后再 `re.findall(r"(?<!\d)1[3-9]\d{9}(?!\d)", text2)` 抽手机号。
请登录后提交代码