Python正则表达式检查字母数字

标签 python regex string python-2.7

我使用下面的正则表达式来检查字符串是否包含字母数字,但我得到结果 = None。

>>> r = re.match('!^[0-9a-zA-Z]+$','_')
>>> print r
None

最佳答案

!在正则表达式中没有任何特殊含义,您需要使用^来否定匹配,就像这样

>>> re.match('^[^0-9a-zA-Z]+$','_')
<_sre.SRE_Match object; span=(0, 1), match='_'>

在 Python 2.x 中,

>>> re.match('^[^0-9a-zA-Z]+$','_')
<_sre.SRE_Match object at 0x7f435e75f238>

注意:仅当整个字符串充满非字母数字字符时,此正则表达式才会为您提供匹配项。

如果您想检查任何字符是否为非字母数字,则需要使用 re.search 并删除 +$,像这样

>>> re.search('[^0-9a-zA-Z]', '123abcd!')
<_sre.SRE_Match object; span=(7, 8), match='!'>

这意味着在字符串中的任何位置查找除 0-9a-zA-Z 之外的任何字符。 (re.match 将尝试从字符串的开头进行匹配。详细了解 re.searchre.match here )。

注意:此问题的最佳解决方案是使用 str.isalnum ,如下所示

>>> "123abcdABCD".isalnum()
True
>>> "_".isalnum()
False

仅当整个字符串充满字母数字字符时,才会返回True。但是,如果您想查看字符串中的任何字符是否是字母数字,那么您需要使用 any 函数,如下所示

>>> any(char.isalnum() for char in "_!@#%^$()*")
False
>>> any(char.isalnum() for char in "_!@#%^a()*")
True

关于Python正则表达式检查字母数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29014462/

相关文章:

python multiprocessing - 在使用 Process.start(target=func) 调用的函数中访问进程名称

Python MySQL 语句输出 : 0 or 1

java - 有没有办法只从那些以数字开头后跟句点的元素中删除前导数字?

regex - MariaDB:带有 [.character.] 的 REGEX 不再起作用(“不支持 POSIX 整理元素”)

Python 正则表达式,用于空白行之前的所有内容

java - 使用 PC 远程读取 JSP 页面上的文件时出错

ios - 通过表格附件按钮将字符串值传递给不同的 View Controller

javascript - 为什么 Ext flash 组件连接两个字符串来形成这个 url?

python - 我们可以从同一个服务器/盒子运行 perl 和 python cgi Web 门户吗

python - pandas 日期时间转换不一致