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

时间:2018-12-10 05:40:29

标签: python regex

我正在尝试测试字符是否为特殊字符。

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

try except

输出>>未找到

但是,如果我按如下所示更改代码中“-”字符的位置(代码的第3行),则它可以正常工作

import re

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

if regex.search(s) == None:
    print("Not found")
else:
    print("Found")

输出>>找到

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

2 个答案:

答案 0 :(得分:5)

-被视为特殊字符,如果不是范围中的最后一个字符或第一个字符,并且不能转义。所以:

  • [-19][19-][1\-9]-19,但
  • [1-9]介于19之间,包括-本身。

答案 1 :(得分:0)

正则表达式中的

'-'表示两者之间。 所以第一个表达式说

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

在')'和'+'之间匹配字符

https://docs.python.org/2/library/re.html