Skip to main content
 首页 » 编程设计

python之用于将可选参数匹配为字符串中的组的正则表达式

2025年05月04日20lyj

我正在尝试读取一个批处理脚本,其中包含命令的输入字符串和可选参数,如

input = 'command -a field1 -b field2 -c field3' 

选项参数由用户在文件中设置,我通过读取文件获取字符串。如果包含该选项,我将需要提取该字段。

我目前的正则表达式为:

expr = '^(?P<exec>[^\s]+) -m (?P<mode>[^\s]+) -d (?P<machine>[^\s]+) -p (?P<port>[^\s]+)' 
m = re.match(expr, input) 

当用户以相同顺序包含所有选项时,正则表达式匹配字符串并捕获组。这是一个示例输出。

{   'exec': 'custom-script', 
    'mode': 'debug', 
    'machine': 'desk-123', 
    'port': '7905'   } 

但是,如果未包含任何选项,或者它们的顺序不同,则正则表达式将失败。如何修改我的正则表达式以在这两种情况下执行?

请您参考如下方法:

在 Python 中,您可以使用内置的 optparse 或 argparse 模块为您执行此操作,这样您就不必为最终会失败的核心正则表达式而烦躁:-)