Python Regex - 不捕获非字母数字

标签 python regex

尝试在将其作为正则表达式练习返回之前检查格式正确的名称字符串。它捕获诸如

之类的字符串

'bob1' '55bob' 'b64ob' etc.

但不会捕获非字母数字输入,例如 bob!。我原以为 [a-z]+ 部分会处理这个问题,查看文档。我一定是忽略了什么,有什么帮助吗?谢谢。

def get_name(self):
    """Returns the user-name if valid"""

    match_obj = re.match(r'\b[a-z]+\b', self.name, re.I)
    if match_obj is None: 
        raise ValueError('Matching name not found')
    return self.name

最佳答案

边界 \b 查找 \w 字符序列的开头或结尾。要了解什么是 \w 字符,您可以查看。

>>> import re
>>> re.match('\w+', 'bob!')
<_sre.SRE_Match object; span=(0, 3), match='bob'>
>>> re.match('\w+', "there's")
<_sre.SRE_Match object; span=(0, 5), match='there'>

它匹配字母但不匹配标点符号。所以回到你的正则表达式 \b[a-z]+\b。如果我要在花括号中围绕 bob! 绘制边界,它将看起来像 {bob}!。所以正则表达式确实与结果 bob 匹配。

这解释了是什么让您的正则表达式按照它的方式运行。但是不清楚如何回答你的问题,因为你还没有告诉我们你想要它做什么。假设您想检查字符串是否包含 a-zA-Z 并且没有别的 我会回应使用 ^[a-z] 的建议+$。这里,^ 标记字符串的开始,$ 标记结束。

关于Python Regex - 不捕获非字母数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35052636/

相关文章:

python - 使用 numpy 忽略多个变量(包括函数)

python - WSGI/APACHE/DJANGO ..导入错误: Could not import settings

正则表达式匹配所有可能性

java - 未找到控制台。如何获取 JVM 的控制台?

regex - Bash - 用于确定 ls -al 的输出是文件还是目录以及隐藏的正则表达式

python - 无法使用 gmail 通过 python 发送电子邮件 - smtplib.SMTPException : SMTP AUTH extension not supported by server

python - 在 flask 中打印多张图像(每行)

python - 有没有等同于 Memcpy 的 Python

javascript - 匹配 0 或 1 的正则表达式

java - 在自然语言中断处拆分字符串