1

目前使用带有 SSI Legacy Parser On 的 Apache 2.4 并尝试使用正则表达式代码来获得我正在寻找的结果。

<!--#set var="test" value=$REQUEST_URI -->
<!--#echo var="test" -->

我从上面的代码中得到的示例结果是:

/path1/path2/path3/filename.html

/path1/path2/path3/filename.html?id=2019

我想得到的示例结果是:

/path1/path2/path3/

无论可能有多少路径,删除最后一个正斜杠之后的任何内容。

是否有正则表达式代码或我可以用来执行此操作的东西?

4

1 回答 1

1

当然!在这里,我们可以简单地添加一个斜线边界并从头到最后一个斜线滑动所有内容:

(.*)\/

表达式可以停在那里,可以简单地调用 using $1。但是,如果您愿意,我们还可以为其添加更多边界,例如开始和结束字符:

^(.*)\/.*$

在此处输入图像描述

正则表达式

如果这不是您想要的表达式,您可以在regex101.com中修改/更改您的表达式。

正则表达式电路

您还可以在jex.im中可视化您的表达式:

在此处输入图像描述

JavaScript 演示

const regex = /^(.*)\/.*$/gm;
const str = `/path1/path2/path3/filename.html
/path1/path2/path3/filename.html?id=2019
/path1/path2/path3/path4/filename.html?id=2019
/path1/path2/path3/path4/path5/filename.html?id=2019

`;
const subst = `$1`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

于 2019-05-18T17:45:21.840 回答