我试图用python创建一个小的文本限制程序。基本上,用户输入文本,一些过滤器(a代表字母,n代表数字,等等)。用户可以组合过滤器(字母数字的a和n,等等),但我偶然发现:
if re.match("[a-zA-Z]", textToRestrict):
return True
else:
return False
这就是事情分崩离析的地方。假设只使用字母作为过滤器,程序将只接受字符串,例如dance
。但是,if语句仍然返回true
,如果textToRestric
是dance1234
(不正确),而{
相反,如果我通过[0-9]
测试数字,它仍然会返回true
,即使它包含字母字符,前提是这些字符不是第一个。在
我如何使用regex只匹配某个类型,并且以这样的方式添加另一个类型(如string+typedigit)允许两种类型都返回true
?在
更新:这是我用于多个过滤器的方法:
^{pr2}$arguments
是用户输入的参数。if语句检查其中的内容,并假定向regex字符串添加更多模式。在
在regex的两端添加anchors,再加上一个限定符(
+
如果您想排除空字符串;*
如果您想允许空字符串)。现在,您只需要检查第一个字符(单数)是否是字母(即匹配[a-zA-Z]
)。在你想要的是:
(或者,如果过滤器真的这么简单,可以考虑使用
str.isalpha
之类的字符串方法,as SirParselot suggests in a comment。)相关问题 更多 >
编程相关推荐