带有GET变量的URL的正则表达式

时间:2013-01-06 10:18:22

标签: regex string mod-rewrite

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

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

有什么用?

3 个答案:

答案 0 :(得分:1)

  • view.php\?,您接受viewaphp?。这可以吗?你可能意味着view\.php。此外,您在最后强制执行问号,而:
  • (&|\?)此处您再次强制使用&符号或问号。因此,您需要view.php??file=...view.php?.*&file=...
  • 之类的内容

你想要的可能是什么(虽然没有经过测试,并注意+不允许空文件名):

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

答案 1 :(得分:1)

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

此正则表达式应匹配任何字符串

file的获取值
view\.php\?.*?\bfile=(\w*)\b

答案 2 :(得分:1)

正如@Lindrian所问,这是针对以view.py开头还是针对整个网址的字符串运行的?对于前一种情况,这个简单的正则表达式应该在我看来很好(在这里使用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'