根据下列字符串构成的规律写出正则表达式,并尝试利用 re 库的有关函数实现 对测试字符串的匹配、搜索、分隔和替换等操作。 (1)18 位身份证号码; (2)E-mail 地址; (3)手机号码; (4)IPv4 地址(比如 202.205.80.132)
时间: 2024-10-21 16:07:18 浏览: 12
python使用正则表达式匹配字符串开头并打印示例
为了编写针对各个规则的正则表达式以及使用Python的re库进行操作,我们可以分别创建四个正则表达式模式:
1. **18位身份证号码**(中国大陆):
```
^\d{6}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])\d{3}$
```
2. **E-mail 地址**:
```
^[\w\.-]+@[\w\.-]+\.\w+$
```
3. **手机号码**(中国大陆的11位手机号,前缀可以是13, 14, 15, 17, 18, 19):
```
^1[3-9]\d{9}$
```
4. **IPv4 地址**:
```
^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$
```
然后,我们可以使用`re`库来进行相应的操作:
```python
import re
# 示例字符串
test_string = "我的电话是13912345678,邮箱地址是example@example.com,身份证号是19900101123456789012,IP地址是202.205.80.132"
def match_search_replace(pattern, string):
# 匹配
match_result = re.match(pattern, string)
if match_result:
print(f"匹配成功:{match_result.group()}")
else:
print("未找到匹配")
# 搜索
search_result = re.findall(pattern, string)
print(f"搜索结果:{search_result}")
# 分割
split_result = re.split(pattern, string)
print(f"分割后:{split_result}")
# 替换
replaced_string = re.sub(pattern, "[REPLACED]", string)
print(f"替换后:{replaced_string}")
# 身份证号码、E-mail地址、手机号和IPv4地址的处理
pattern_dict = {
"身份证": r"^(\d{6}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])\d{3})$",
"邮箱": r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$",
"手机号": r"^\d{11}$",
"IPv4": r"^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$"
}
for key, value in pattern_dict.items():
match_search_replace(value, test_string)
阅读全文