<分区>
我正在尝试用 Python 创建一个小型的文本限制程序。基本上,用户输入文本、一些过滤器(a 代表字母,n 代表数字,等等)。用户可以组合过滤器(a 和 n 用于字母数字等),但我偶然发现了这个:
if re.match("[a-zA-Z]", textToRestrict):
return True
else:
return False
这就是事情分崩离析的地方。据推测,仅使用字母作为过滤器,该程序将只接受字符串,例如 dance
。 .但是,if 语句仍然返回 true
如果textToRestric
是,说,dance1234
(不正确)同时 1234dance
将返回 false
(正确)。
相反,如果我通过 [0-9]
测试数字, 它仍然会返回 true
即使它包含字母字符,前提是这些字符不是第一个字符。
如何使用正则表达式仅匹配特定类型,并以这种方式向其添加另一种类型(如字符串类型 + 数字类型)允许两种类型返回 true
?
更新:这是我用于多个过滤器的方法:
regex = ""
if FilterClass.ALPHABETIC in arguments:
regex += "[a-zA-Z]"
if FilterClass.CAPITAL_ALPHABETIC in arguments:
regex += "[A-Z]"
if FilterClass.NUMERIC in arguments:
regex += "\d"
if FilterClass.SPECIAL_CHARACTERS in arguments:
regex += "[^0-9a-zA-Z]*"
if FilterClass.DASH_UNDERSCORES in arguments:
regex += "[-_]*"
regall = "^(" + regex + ")+$"
if re.match(regall, textToRestrict):
return True
else:
return False
arguments
是用户输入的参数。 if 语句检查其中的内容,并据推测向正则表达式字符串添加更多模式。