Skip to main content
 首页 » 编程设计

Python 正则表达式不匹配字符串中的所有模式

2025年05月04日21mengfanrong

我想匹配 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 )。