python regex - 识别超过N个非alphaNumerics的String

时间:2016-03-18 04:27:18

标签: python regex

我想识别其中包含超过3个非字母数字(除了\。\ - \ s)的字符串,它会计算标点符号和字符串。特殊字符 我已尝试使用以下正则表达式,但它使用" 非字母数字按顺序识别字符串"

  

([^ A-ZA-Z0-9 .- \ S]){2}

例如:识别出abc__def,未识别出ab_c_d

我想识别任何超过3个非字母数字的字符串(除了\。\ - \ s)

2 个答案:

答案 0 :(得分:2)

如果您希望识别字符串至少三个(如您的示例所示)非字母数字出现,不一定按顺序发生,您可以使用:

([^a-zA-Z0-9.\-\s].*){3}

您可以简单地使用{3},因为最后.*会处理字符串的其余部分。

答案 1 :(得分:0)

您可以使用以下方法检查超过3个非字母数字的字符串

import re
reg = r'.*([^a-zA-Z0-9\.\-\s]{4}).*'

print(re.search(reg,"!$#@abcdef"))
print(re.search(reg,"123abc"))
print(re.search(reg,"#$abc"))
print(re.search(reg,"abc____def"))
print(re.search(reg,"abc---def"))

Demo

"\W",即。([^a-zA-Z0-9_])也可用于非字母数字,但不包括“_”。