Python:正则表达式参数可能存在语法错误

2024-09-30 01:27:06 发布

您现在位置:Python中文网/ 问答频道 /正文

为Python做一个练习题。没有打印出来。我在模式变量中尝试了很多不同的方法pattern = '@gmail\.com'对于代码来说效果很好,但我希望参数精确

pattern = '^[a-z]{1,20}\s+[a-z]{1,50}@gmail\.com$'在Rubular.com上使用他们网站上显示的规则。当我在Python上使用上述模式时,语法错误出现在胡萝卜括号或花括号中。我想解释一下上面这行代码的错误

模式应该是firstName emailID@gmail.com

约束条件

  • 名字最多应为20个字符(编辑:且应为小写)
  • 电子邮件ID最多为50个字符(编辑:且应为小写)
  • 所有电子邮件应发送至@gmail.com

我的代码

import math
import os
import random 
import re
import sys

def appendUserName(firstNameEmailID):
    pattern = '^[a-z]{1,20}\s+[a-z]{1,50}@gmail\.com$'

    if re.search(pattern,emailID):
        userList.append(firstName)

if __name__ == '__main__':
    N = int(input())
    userList = []

    for N_itr in range(N):
        firstNameEmailID = input().split()

        firstName = firstNameEmailID[0]

        emailID = firstNameEmailID[1]

        appendUserName(firstNameEmailID)

    print(*sorted(userList), sep = '\n')

Tags: 代码importcom编辑电子邮件模式firstnamegmail
2条回答

模式代码的第一部分包括电子邮件变量的名字。创建了一个emailPatternnamePattern变量

def appendUserName(firstNameEmailID):
    emailPattern = '[a-z]{1,50}@gmail\.com'
    namePattern = '[a-z]{1,20}'


    if re.search(emailPattern,emailID) and re.search(namePattern,firstName):
        userList.append(firstName)

您应该删除大括号{}后面的+符号,还必须在字母字符匹配中添加[A-Z]

因此,您的正则表达式应该是:

pattern = '^[a-zA-Z]{1,20}\s+[a-zA-Z]{1,50}@gmail.com$'

要获得此示例的更完整测试代码,请执行以下操作:

import re
pattern = '^[a-zA-Z]{1,20}\s+[a-zA-Z]{1,50}@gmail.com$'
p = re.compile(pattern)
print(bool(p.match('firstName emailID@gmail.com')))

相关问题 更多 >

    热门问题