掌握七大面试必考的正则表达式,从此横扫面试官
2023-10-17 23:03:43
1. 数字千分位分割
题目: 实现一个函数,将给定的数字以千位为单位进行分割,并在每三位数字之间添加一个逗号。
示例:
输入:123456789
输出:123,456,789
解答:
可以使用正则表达式中的\B(非单词边界)来匹配数字之间的边界,然后使用replace()方法替换这些边界为逗号。
import re
def thousand_separator(num):
"""
将数字以千位为单位进行分割,并在每三位数字之间添加一个逗号。
Args:
num: 要分割的数字。
Returns:
分割后的数字字符串。
"""
# 使用正则表达式匹配数字之间的边界
pattern = r'\B(?=(\d{3})+(?!\d))'
# 使用replace()方法替换边界为逗号
return re.sub(pattern, ',', str(num))
# 测试函数
print(thousand_separator(123456789))
2. 手机号格式化
题目: 实现一个函数,将给定的手机号格式化为以下格式:086-139-8888-9999。
示例:
输入:13988889999
输出:086-139-8888-9999
解答:
可以使用正则表达式中的\d{3}来匹配手机号的前三位数字,\d{4}来匹配手机号的中间四位数字,\d{4}来匹配手机号的后四位数字,然后使用replace()方法将这些数字替换为相应的格式。
import re
def phone_number_format(number):
"""
将手机号格式化为以下格式:086-139-8888-9999。
Args:
number: 要格式化的手机号。
Returns:
格式化后的手机号字符串。
"""
# 使用正则表达式匹配手机号的前三位数字
pattern1 = r'(\d{3})'
# 使用正则表达式匹配手机号的中间四位数字
pattern2 = r'(\d{4})'
# 使用正则表达式匹配手机号的后四位数字
pattern3 = r'(\d{4})'
# 使用replace()方法替换数字为相应的格式
return re.sub(pattern1, r'086-\1', re.sub(pattern2, r'-\2', re.sub(pattern3, r'-\3', number)))
# 测试函数
print(phone_number_format('13988889999'))
3. 实现一个字符串trim函数
题目: 实现一个字符串trim函数,删除字符串首尾的空格。
示例:
输入:' Hello, world! '
输出:'Hello, world!'
解答:
可以使用正则表达式中的^\s+和\s+$来匹配字符串首尾的空格,然后使用replace()方法替换这些空格为空字符串。
import re
def string_trim(string):
"""
删除字符串首尾的空格。
Args:
string: 要处理的字符串。
Returns:
去除空格后的字符串。
"""
# 使用正则表达式匹配字符串首尾的空格
pattern = r'^\s+|\s+import re
def string_trim(string):
"""
删除字符串首尾的空格。
Args:
string: 要处理的字符串。
Returns:
去除空格后的字符串。
"""
# 使用正则表达式匹配字符串首尾的空格
pattern = r'^\s+|\s+$'
# 使用replace()方法替换空格为空字符串
return re.sub(pattern, '', string)
# 测试函数
print(string_trim(' Hello, world! '))
#x27;
# 使用replace()方法替换空格为空字符串
return re.sub(pattern, '', string)
# 测试函数
print(string_trim(' Hello, world! '))
4. 匹配一个以字母开头,后面是数字和字母的混合字符串
题目: 实现一个正则表达式,匹配一个以字母开头,后面是数字和字母的混合字符串。
示例:
输入:'a1b2c3'
输出:True
输入:'1a2b3c'
输出:False
解答:
可以使用正则表达式中的^[a-zA-Z][a-zA-Z0-9]*$来匹配一个以字母开头,后面是数字和字母的混合字符串。
import re
def match_string(string):
"""
匹配一个以字母开头,后面是数字和字母的混合字符串。
Args:
string: 要匹配的字符串。
Returns:
匹配结果(True/False)。
"""
# 使用正则表达式匹配字符串
pattern = r'^[a-zA-Z][a-zA-Z0-9]*import re
def match_string(string):
"""
匹配一个以字母开头,后面是数字和字母的混合字符串。
Args:
string: 要匹配的字符串。
Returns:
匹配结果(True/False)。
"""
# 使用正则表达式匹配字符串
pattern = r'^[a-zA-Z][a-zA-Z0-9]*$'
# 使用match()方法进行匹配
return re.match(pattern, string)
# 测试函数
print(match_string('a1b2c3'))
print(match_string('1a2b3c'))
#x27;
# 使用match()方法进行匹配
return re.match(pattern, string)
# 测试函数
print(match_string('a1b2c3'))
print(match_string('1a2b3c'))
5. 匹配一个包含数字和字母的字符串,且数字和字母必须交替出现
题目: 实现一个正则表达式,匹配一个包含数字和字母的字符串,且数字和字母必须交替出现。
示例:
输入:'a1b2c3'
输出:True
输入:'1a2b3c'
输出:False
输入:'a1a2b3'
输出:False
解答:
可以使用正则表达式中的^([a-zA-Z0-9])([a-zA-Z0-9])*$来匹配一个包含数字和字母的字符串,且数字和字母必须交替出现。
import re
def match_string(string):
"""
匹配一个包含数字和字母的字符串,且数字和字母必须交替出现。
Args:
string: 要匹配的字符串。
Returns:
匹配结果(True/False)。
"""
# 使用正则表达式匹配字符串
pattern = r'^([a-zA-Z0-9])([a-zA-Z0-9])*import re
def match_string(string):
"""
匹配一个包含数字和字母的字符串,且数字和字母必须交替出现。
Args:
string: 要匹配的字符串。
Returns:
匹配结果(True/False)。
"""
# 使用正则表达式匹配字符串
pattern = r'^([a-zA-Z0-9])([a-zA-Z0-9])*$'
# 使用match()方法进行匹配
return re.match(pattern, string)
# 测试函数
print(match_string('a1b2c3'))
print(match_string('1a2b3c'))
print(match_string('a1a2b3'))
#x27;
# 使用match()方法进行匹配
return re.match(pattern, string)
# 测试函数
print(match_string('a1b2c3'))
print(match_string('1a2b3c'))
print(match_string('a1a2b3'))
6. 匹配一个合法的IP地址
题目: 实现一个正则表达式,匹配一个合法的IP地址。
示例:
输入:'192.168.1.1'
输出:True
输入:'192.168.1.256'
输出:False
输入:'192.168.1.a'
输出:False
解答:
可以使用正则表达式中的^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$来匹配一个合法的IP地址。
import re
def match_ip_address(ip_address):
"""
匹配一个合法的IP地址。
Args:
ip_address: 要匹配的IP地址。
Returns:
匹配结果(True/False)。
"""
# 使用正则表达式匹配IP地址
pattern = r'^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)import re
def match_ip_address(ip_address):
"""
匹配一个合法的IP地址。
Args:
ip_address: 要匹配的IP地址。
Returns:
匹配结果(True/False)。
"""
# 使用正则表达式匹配IP地址
pattern = r'^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
# 使用match()方法进行匹配
return re.match(pattern, ip_address)
# 测试函数
print(match_ip_address('192.168.1.1'))
print(match_ip_address('192.168.1.256'))
print(match_ip_address('192.168.1.a'))
#x27;
# 使用match()方法进行匹配
return re.match(pattern, ip_address)
# 测试函数
print(match_ip_address('192.168.1.1'))
print(match_ip_address('192.168.1.256'))
print(match_ip_address('192.168.1.a'))
7. 匹配一个有效的电子邮箱地址
题目: 实现一个正则