我想从变量sort_by=<string>
中删除所有get_params
。
get_params将为?sort_by=name&role=user
或
?gender=male&sort_by=name_desc&role=user
或'?sort_by=name'
我想要这样的输出
我尝试过
re.sub("^sort_by=&*$",r'', get_params)
但无法正常工作。
我在stackoverflow中调查了很多答案,但我做不到
答案 0 :(得分:2)
您可以使用
[?&]sort_by=[^&]*$|(?<=[?&])sort_by=[^&]*&
替换为空字符串。参见regex demo online。
它匹配
[?&]
-一个?
或&
sort_by=
-文字子字符串[^&]*
-除&
以外的0个字符$
-字符串的结尾。|
-或(?<=[?&])
-以?
或&
开头的位置sort_by=
-文字子字符串[^&]*
-除&
以外的0个字符&
-一个&
字符。一个Python demo:
key_to_remove = r'sort_by'
rx = r'[?&]{0}=[^&]*$|(?<=[?&]){0}=[^&]*&'.format(key_to_remove)
tests = ['?sort_by=name&role=user','?gender=male&sort_by=name_desc&role=user','?sort_by=name','?age=24&sort_by=fullname&gender=male','?age=24&sort_by=fullname']
for test in tests:
print(test + " => " + re.sub(rx, "", test))
输出:
?sort_by=name&role=user => ?role=user
?gender=male&sort_by=name_desc&role=user => ?gender=male&role=user
?sort_by=name =>
?age=24&sort_by=fullname&gender=male => ?age=24&gender=male
?age=24&sort_by=fullname => ?age=24