我正在尝试读取一个批处理脚本,其中包含命令的输入字符串和可选参数,如
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 模块为您执行此操作,这样您就不必为最终会失败的核心正则表达式而烦躁:-)
