1
http://mywebsite/index.aspx?db=DAYTON#id%3D7304%3Bpage%3D1%3Bview%3Dpages

http://mywebsite/#id%3D3D7304%3Bpage%3D1%3Bview%3Dpages

上面的两个 URL 指向完全相同的位置,但样式不同。我正在尝试编写一个单行表达式,无论向其抛出哪种样式的 URL,它都会创建一个匹配项。我主要关注“mywebsite/”之后的所有内容

任何帮助将不胜感激!

4

2 回答 2

0

这是一个沉重的单线正则表达式:

^http:\/\/mywebsite\/(index\.aspx\?db=[A-Z]+)?#((id%\w+(%3B)?)|(view%\w+(%3B)?)|(page%\w+(%3B)?))*$

它将接受您的网站,其中包含可选的index.aspx?db=(设置为某个大写值)和您使用的 3 个变量的任意顺序idviewpage.

多彩的解释演示在这里:http ://regex101.com/r/jB2jS3

于 2013-03-05T19:08:50.030 回答
0

首先,解码 URL 以使事情变得更容易:

http://mywebsite/index.aspx?db=DAYTON#id=7304;page=1;view=pages
http://mywebsite/#id=3D7304;page=1;view=pages

现在您可以编写两个正则表达式来匹配每个表达式path并将它们与|运算符(Demo)结合起来:

http://mywebsite/(index.aspx\?db=(\w+)#id=(\d+);page=(\d+);view=(\w+)|#id=3D7304;page=1;view=pages)

如果您的编程语言支持命名组,您也可以使用它们。


请注意,如果参数顺序发生变化,上面的正则表达式将不会匹配 URL。

如果可以,我建议您使用 URL 解析器。

于 2013-03-05T17:32:12.183 回答