gpt4 book ai didi

regex - 如何编写正则表达式以从 URL 中删除最后一个参数

转载 作者:行者123 更新时间:2023-12-01 07:34:28 26 4
gpt4 key购买 nike

我正在尝试为 IIS 创建 URL 重写入站规则以在特定参数之前返回 URL。

已编辑:我应该说明 authProvider 始终是最后一个参数。

例子:

http://localhost/WebAccess/Default.ashx?accessionNumber=009&authProvider=Bypass

我想从 URL 的末尾删除 &authProvider=Bypass

我试过:

.*(?=&authProvider)

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Test" enabled="true">
<match url="(.*)&amp;authProvider.+" />
<action type="Rewrite" url="{R:0}" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>

</system.webServer>
</configuration>

enter image description here

最佳答案

您显示的示例将匹配您想要的内容,但不会更改 URL。你的匹配结果应该有你想要的匹配字符串作为结果。

我认为问题可能是您正在尝试替换您匹配的内容,但是由于正向查找(?= 不是匹配结果的一部分)当您进行替换时,您是以与开始时相同的字符串结束。作为替代方案,假设您知道如果参数顺序发生变化,这将不是很稳健,您可以使用:

(.*)&authProvider.+

然后替换为

$1

这将导致:

http://localhost/WebAccess/Default.ashx?accessionNumber=009

本质上它匹配整个字符串并将其替换为 $auth 之前的所有内容,它在组 1 ($1) 中。

更新

通过您的更新,我看到重写规则语法使用 {R:1},因此 $1 在我的示例中应该是 {R:1},而在您的重写规则中应该是 {R:1}。参见 here举个例子。

关于regex - 如何编写正则表达式以从 URL 中删除最后一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21869362/

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