gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 04:48:06 24 4
gpt4 key购买 nike

我使用下面的正则表达式来检查字符串是否包含字母数字,但我得到结果 = 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com