Python正则表达式匹配汉字、英文、数字、常用符号等
要创建一个正则表达式,用于匹配汉字(包括但不限于常用的汉字和扩展汉字)、数字、英文字符、换行符(\n
、\r
)、制表符(\t
)以及常见的和特殊符号,同时过滤掉其他字符,可以使用以下正则表达式:
^[\u2E80-\u9FFFa-zA-Z0-9\n\r\t!@#$%^&*()_+={}[\]|:;"'<>,.?/~`-]+$
解释:
^
和$
:分别表示字符串的开始和结束,确保整个字符串都符合匹配规则。[\u2E80-\u9FFF]
:匹配 Unicode 范围内的汉字,包括常用汉字和扩展汉字。a-zA-Z
:匹配所有英文字母(大小写)。0-9
:匹配所有数字。\n\r\t
:匹配换行符、回车符和制表符。!@#$%^&*()_+={}[\]|:;"'<>,.?/~
-`:匹配常见的标点和特殊符号。
示例:
假设你有一个字符串 你好,世界!123\nHello, World!
,使用上述正则表达式将匹配整个字符串,因为它包含汉字、英文、数字、换行符和常见符号。
使用示例(Python):
import re
# 定义正则表达式
pattern = re.compile(r'^[\u2E80-\u9FFFa-zA-Z0-9\n\r\t!@#$%^&*()_+={}[\]|:;"\'<>,.?/~`-]+$')
# 测试字符串
test_string = "你好,世界!123\nHello, World!"
# 检查是否匹配
if pattern.match(test_string):
print("匹配成功")
else:
print("匹配失败")
过滤掉不匹配的字符:
如果你有一个字符串,需要过滤掉不匹配的字符,可以使用 re.sub
方法:
import re
# 定义正则表达式
pattern = re.compile(r'[\u2E80-\u9FFFa-zA-Z0-9\n\r\t!@#$%^&*()_+={}[\]|:;"\'<>,.?/~`-]+')
# 测试字符串
test_string = "你好,世界!123\nHello, World! 你好,世界!123\nHello, World! 你好,世界!123\nHello, World! 😊"
# 过滤掉不匹配的字符
filtered_string = ''.join(pattern.findall(test_string))
print(filtered_string)
上述代码将过滤掉 😊
这样的表情符号,只保留匹配的字符。