首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python: regex匹配字符串和只匹配字符串

python: regex匹配字符串和只匹配字符串
EN

Stack Overflow用户
提问于 2015-12-01 20:19:00
回答 1查看 4.3K关注 0票数 1

我试图在python中创建一个小的文本限制程序。基本上,用户输入文本,一些过滤器(a表示字母,n表示数字,等等)。用户可以组合过滤器(a和n表示alpha-数值,等等)但我无意中发现:

代码语言:javascript
复制
if re.match("[a-zA-Z]", textToRestrict):
    return True
else:
    return False

事情就在这里分崩离析。据说,只有字母作为过滤器,程序将只接受字符串,例如,dance。但是,如果truedance1234 (不正确),而1234dance将返回false (正确),则if语句仍然返回false

相反,如果我通过[0-9]测试数字,即使包含字母字符,它仍然会返回true,条件是这些字符不是第一个字符。

如何使用regex只匹配特定类型,并且在其中添加另一种类型(如字符串+类型数字)允许这两种类型返回true

更新:这是我用于多个过滤器的方法:

代码语言:javascript
复制
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语句检查其中的内容,并且应该向regex字符串中添加更多的模式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-01 20:21:27

在正则表达式的两端添加,加上一个量词(如果要排除空字符串,则为+;如果要允许空字符串,则为* )。现在,您只是检查第一个字符(单数)是否为字母(即匹配[a-zA-Z])。

你想要的是:

代码语言:javascript
复制
re.match("^[a-zA-Z]+$", textToRestrict)

(或者,如果过滤器真的这么简单,可以考虑使用字符串方法,比如str.isalpha正如SirParselot在评论中所暗示的。)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34029365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档