1

尝试获取与带有 as valueview.php的 GET 变量匹配的任何字符串的正则表达式。仅供参考,我需要将此 URL 重写为file[a-zA-Z0-9_]*/file/value

我做了什么但没有工作:^view.php\?.*?(&|\?)file=([a-zA-Z0-9_]*).*$

有什么作用?

4

3 回答 3

1

正如@Lindrian 所问,这将针对以整个 url 开头的字符串view.py还是针对整个 url 运行?对于前一种情况,我认为这个简单的正则表达式应该可以正常工作(在此处使用 Python):

In [1]: import re

In [2]: s = 'view.php?foo=bar&file=blablah123&anotherfoo=anotherbar'

In [3]: re.sub(r'view\.php\?.*\bfile=(\w+).*', '/file/\g<1>', s)
Out[3]: '/file/blablah123'
于 2013-01-06T14:48:32.510 回答
1
  • view.php\?在这里你接受viewaphp?。那样行吗?你可能的意思是view\.php。此外,您在最后强制使用问号,而:
  • (&|\?)在这里,您再次强制使用与号或问号。因此,您需要类似view.php??file=...view.php?.*&file=...

您想要的可能类似于(尽管未经测试,并注意 + 不允许空文件名):

^view\.php\?(?:file=)|(?:.*&file=)([a-zA-Z0-9_]+)(?:&|$)

于 2013-01-06T10:23:54.097 回答
1

前导^意味着您的整个字符串以 view.php 开头,这可能不是真的。同样在您的正则表达式中,您的假设file是最后一个 GET 等。

此正则表达式应匹配file任何字符串中的获取值

view\.php\?.*?\bfile=(\w*)\b
于 2013-01-06T10:35:19.083 回答