gpt4 book ai didi

python - 预先验证 API 测试请求 URL 列表

转载 作者:行者123 更新时间:2023-12-01 06:42:09 25 4
gpt4 key购买 nike

我想使用 Python 正则表达式预先验证下面的 API 测试请求 URL 列表。

以下 URLS/请求字符串“R”列表有 2 个部分:

  1. 请求和
  2. 此请求的有效性。

除了前 19 个和最后 3 个 (22-24) 之外,正则表达式代码可以正常工作,但对于请求 20-21 则不能正常工作(请参阅列表 def 中的注释)。

我确信有更有效的方法来进行匹配,但它们给了我类似的结果。所以我只是让我的例子保持简单。

import re
R = [
# these are invalid and fail regex match
"http://127.0.0.1:5000/x,bad",
"http://127.0.0.1:5000/countries?,bad",
"http://127.0.0.1:5000/countries?x,bad",
"http://127.0.0.1:5000/countries?=,bad",
"http://127.0.0.1:5000/countries?x=,bad",
"http://127.0.0.1:5000/countries&,bad",
"http://127.0.0.1:5000/countries&x,bad",
"http://127.0.0.1:5000/countries&=,bad",
"http://127.0.0.1:5000/countries&x=,bad",
"http://127.0.0.1:5000/countries&x=x,bad",
"http://127.0.0.1:5000/countries?code=AU?,bad",
"http://127.0.0.1:5000/countries?name=Australia?x,bad",
"http://127.0.0.1:5000/countries?name=Australia?=,bad",
"http://127.0.0.1:5000/countries?name=Australia?x=,bad",
"http://127.0.0.1:5000/countries?name=Australia?x=x,bad",
"http://127.0.0.1:5000/countries?name=Australia&,bad",
"http://127.0.0.1:5000/countries?name=Australia&x,bad",
"http://127.0.0.1:5000/countries?name=Australia&=,bad",
"http://127.0.0.1:5000/countries?name=Australia&x=,bad",

# these are valid requests and fail regex match
"http://127.0.0.1:5000/countries,good", # 20
"http://127.0.0.1:5000/countries?name=Australia,good", # 21

# these are valid and pass regex match
"http://127.0.0.1:5000/countries?code=AU&name=Australia,good", # 22
"http://127.0.0.1:5000/countries?name=New Zealand&calling_code=64,good", # 23
"http://127.0.0.1:5000/countries?code=AU&name=Australia&capital=Canberra,good", #24
]
for r in R:
divs.split(",")
m = re.match(r'http://127.0.0.1:5000/countries[\?[\s\w]{1,}=[\s\w]{1,}[\&[\s\w]{1,}=[\s\w]{1,}]{0,}]{0,1}', divs[0])
res = "good" if m != None else "bad"
print(divs[0] + " should be " + divs[1] + " and is " + res)

最佳答案

使用以下正则表达式:

^http://127\.0\.0\.1:5000/countries(?:\?\w+=[\s\w]+(?:&\w+=[\s\w]+)*)?$/gm

请注意:

  1. 国家后面的完整内容是可选的。
  2. . 需要转义,因为它在正则表达式世界中具有特殊含义
  3. URL 参数是键值对,左侧由 \w 匹配,右侧由 \s\w 组合匹配。

Demo

关于python - 预先验证 API 测试请求 URL 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59402536/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com