无法在正则表达式中检测到" - "字符

Mih*_*ika 5 python regex

我试图测试一个角色是否是一个特殊角色.

当我编写以下代码时,它的' - '字符失败:

import re

s = '-'
regex = re.compile('[!@#$%^&*()-+]')

if regex.search(s) == None:
    print("Not found")
else:
    print("Found")
Run Code Online (Sandbox Code Playgroud)

输出>>未找到

但是,如果我在模式中更改' - '字符的位置如下(代码的第3行),它可以正常工作

import re 

s = '-'
regex = re.compile('[!@#$%^&*()+-]')

if regex.search(s) == None:
    print("Not found")
else:
    print("Found")
Run Code Online (Sandbox Code Playgroud)

输出>>找到

造成这种差异的原因是什么?我如何确保检测到这些字符?

DYZ*_*DYZ 5

-如果它不是范围中的最后一个或第一个字符而未被转义,则被视为特殊字符.所以:

  • [-19]或者[19-]或者[1\-9]-,1或者9,但
  • [1-9]是介于19包容之间的任何东西,但不是-它本身.