我想匹配 curl 命令的 header 模式,例如:
-H 'key: value'
或
-H "key: value"
这个开关可以出现在字符串的中间某处或末尾。
我的模式:
>>> header_pattern = re.compile(' \-H (?:\'|\").+?:.+?(?:\'|\")(?:\s+|$)')
我的字符串:
>>> a = " -H 'Authorization: Bearer xxx' -H 'Content-Type: text/plain' "
现在我试图找到这个模式的所有实例,但它只匹配第一个模式。
>>> headers = header_pattern.findall(a)
>>> headers
[" -H 'Authorization: Bearer xxx' "]
请您参考如下方法:
为什么不使用 argparse module而不是正则表达式:
import argparse
import shlex
parser = argparse.ArgumentParser()
parser.add_argument('command')
parser.add_argument('url')
parser.add_argument('-d', '--data')
parser.add_argument('-b', '--data-binary', default=None)
parser.add_argument('-H', '--header', action='append', default=[])
parser.add_argument('--compressed', action='store_true')
curl_command = "curl https://google.com -H 'Authorization: Bearer xxx' -H 'Content-Type: text/plain'"
tokens = shlex.split(curl_command)
parsed_args = parser.parse_args(tokens)
print(parsed_args.header)
打印 ['Authorization: Bearer xxx', 'Content-Type: text/plain']。
(灵感来自 uncurl package )。
