Python argparse正则表达式

Kou*_*sha 8 python regex argparse

是否可以使用正则表达式来解析参数?例如,我想接受一个参数,如果它只是一个32长度十六进制(即匹配/[a-f0-9A-F]{32}/)

我试过了

p.add_argument('hex', type=str, nargs="[a-f0-9A-F]{32}")
Run Code Online (Sandbox Code Playgroud)

没有成功

wim*_*wim 20

这就是typekwarg用于:它可以采用任何可调用的单个字符串参数并返回转换后的值.

import argparse
import re 
from uuid import uuid4

def my_regex_type(arg_value, pat=re.compile(r"^[a-f0-9A-F]{32}$")):
    if not pat.match(arg_value):
        raise argparse.ArgumentTypeError
    return arg_value

parser = argparse.ArgumentParser()
parser.add_argument('hex', type=my_regex_type)

args = parser.parse_args([uuid4().hex])
Run Code Online (Sandbox Code Playgroud)