首页 > 解决方案 > 正则表达式模式以匹配命令

问题描述

我正在尝试制作一个地址簿程序。我正在制作一个带有 4 个命令 -L、-A、-C、-D 的命令行程序,用于从通讯录中查找、添加、更改或删除联系人。我正在使用 re 创建一个模式来匹配用户输入到某个命令的输入。我对 add 命令的正则表达式模式有问题。该命令需要输入 [name] 和 [email] 以及命令 -a 的标识符。然后传递给 add() 函数以将联系人添加到要写入文件的地址簿字典中。这就是我目前所拥有的正则表达式模式。

add_regex = re.compile(r'''
    ([a-z]+)    #name
    \s          #whitespace
    ((\w+)      #first local part
    ([\._])?        #seperator
    (\w+)?      #second local part
    ([\._])?        #seperator
    (\w+)?      #third local part
    @           #single at sign
    \w+     #domain
    [.]     #period sepeorator
    \w{2,3}$)   #top level domain
    \s          #whitespace
    (-a)        # cmd
    ''', re.I | re.VERBOSE)

当我删除模式的 #cmd 和 #name 部分时,正则表达式会正确。并匹配电子邮件。但是在我将它们添加回来之后,它无法匹配输入我不知道为什么任何可以帮助的人都这样做。编辑:我一直在测试的输入是

keith keith.t.gill@gmail.com -a

并在正则表达式搜索中获得 None

标签: pythonre

解决方案


推荐阅读