Python正则表达式初识(六)

Python正则表达式初识(六)
最新回答
星空伪装的忧蓝

2026-10-24 10:41:06

Python正则表达式中的中括号[]是一个强大的字符匹配工具,其核心功能是匹配括号内任意一个指定字符。以下是详细解析和用法总结:

一、基础用法:匹配任意指定字符
  • 语法:[字符列表]匹配字符串中第一个字符是括号内任意一个字符的情况。示例:import repattern = '[abcd]cpeng123'print(re.findall(pattern, 'dcpeng123')) # 输出: ['dcpeng123']print(re.findall(pattern, 'acpeng123')) # 输出: ['acpeng123']print(re.findall(pattern, 'ecpeng123')) # 输出: [](无匹配)

    关键点:仅当字符串首字符属于[abcd]时匹配成功。

二、区间表示法:匹配连续字符范围
  • 语法:[起始字符-结束字符]匹配指定范围内的任意单个字符(如数字、字母)。常用区间:

    [0-9]:匹配任意数字(等价于d)。

    [a-z]:匹配任意小写字母。

    [A-Z]:匹配任意大写字母。

    示例:匹配11位手机号(以1开头,第二位为3/4/5/7/8,后接9位数字):

    pattern = '1[34578][0-9]{9}'print(re.findall(pattern, '13812345678')) # 输出: ['13812345678']print(re.findall(pattern, '16012345678')) # 输出: [](第二位不匹配)
三、取反操作:匹配不在括号内的字符
  • 语法:[^字符列表]匹配不包含括号内任意字符的情况。示例:匹配手机号且第三位不能为1:pattern = '1[34578][^1]{9}'print(re.findall(pattern, '18042682515')) # 输出: ['18042682515'](无1)print(re.findall(pattern, '18042682511')) # 输出: [](末尾有1)
四、特殊字符转义:匹配字面值
  • 场景:若需匹配括号内的.或*等特殊字符本身,需直接写在[]中。示例:print(re.findall('[.]', 'a.b')) # 输出: ['.'](匹配句点)print(re.findall('[*]', 'a*b')) # 输出: ['*'](匹配星号)

    注意:在[]外,.和*是特殊符号(任意字符/重复),但在[]内默认失去特殊含义。

五、总结与注意事项
  1. 中括号的核心作用:

    匹配任意一个指定字符(如[abcd])。

    通过-表示范围(如[0-9])。

    通过^取反(如[^1])。

  2. 常见误区:

    []仅匹配单个字符,如需多个字符需结合量词(如[0-9]{3}匹配3位数字)。

    ^在[]内表示取反,在[]外表示字符串开头(如^abc)。

  3. 实际应用:

    验证输入格式(如手机号、密码规则)。

    提取特定模式的文本(如日期、邮箱中的字符)。

示例代码整合import re# 1. 匹配任意指定字符print(re.findall('[abcd]test', 'atest')) # 输出: ['atest']# 2. 区间匹配print(re.findall('[a-z]{3}', 'abc123')) # 输出: ['abc']# 3. 取反操作print(re.findall('[^0-9]+', 'a1b2c3')) # 输出: ['a', 'b', 'c']# 4. 特殊字符转义print(re.findall('[.*]', 'a.b*c')) # 输出: ['.', '*']

通过掌握[]的用法,可以高效处理字符级匹配需求,建议结合实际场景多加练习。