我试图测试一个角色是否是一个特殊角色.
当我编写以下代码时,它的' - '字符失败:
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)
输出>>找到
造成这种差异的原因是什么?我如何确保检测到这些字符?
-如果它不是范围中的最后一个或第一个字符而未被转义,则被视为特殊字符.所以:
[-19]或者[19-]或者[1\-9]是-,1或者9,但[1-9]是介于1和9包容之间的任何东西,但不是-它本身.