You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python检测输入特殊字符返回布尔值时正则编译报错问题

报错原因与修复方案

报错根因

你遇到的re.error: multiple repeat报错原因有两点:

  1. 正则表达式中的*、+、?属于正则元字符,作用是定义匹配重复次数,未转义直接作为普通字符匹配时会触发语法解析错误
  2. 你当前的正则写法是要求匹配!"#$%&'()*+,-./\:;<=>?@[]^_这一整串连续的字符串,而非匹配其中任意一个特殊字符,不符合功能需求

修复后的完整代码

import re
def hasSpecialCharacters(s):
    # 所有待匹配特殊字符放入字符集[]中,特殊元字符添加转义符
    stringCheck = re.compile(r'[!"#$%&\'()*+,\-./\\:;<=>?@\[\]^_]')
    print(stringCheck.search(s) is not None)

def main():
    print("Écriver une phrase.")
    trueOrFalse = str(input("=> "))
    hasSpecialCharacters(trueOrFalse)

main()

关键修改说明

  • 用r''原始字符串定义正则规则,避免Python字符串转义和正则转义产生冲突
  • 将所有待匹配的特殊字符包裹在[]中,代表只要匹配到其中任意一个字符就命中规则
  • 对字符集内有特殊含义的字符添加转义:-转义为\-避免被识别为字符范围符,[]转义为\[\]避免被识别为字符集边界,\转义为\\
  • 简化判断逻辑,直接输出search结果非空的布尔值,和原有if判断逻辑完全等价

内容的提问来源于stack exchange,提问作者Babilwan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 20:06:05