尝试获取与带有 as valueview.php
的 GET 变量匹配的任何字符串的正则表达式。仅供参考,我需要将此 URL 重写为file
[a-zA-Z0-9_]*
/file/value
我做了什么但没有工作:^view.php\?.*?(&|\?)file=([a-zA-Z0-9_]*).*$
有什么作用?
尝试获取与带有 as valueview.php
的 GET 变量匹配的任何字符串的正则表达式。仅供参考,我需要将此 URL 重写为file
[a-zA-Z0-9_]*
/file/value
我做了什么但没有工作:^view.php\?.*?(&|\?)file=([a-zA-Z0-9_]*).*$
有什么作用?
正如@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'
view.php\?
在这里你接受viewaphp?
。那样行吗?你可能的意思是view\.php
。此外,您在最后强制使用问号,而:(&|\?)
在这里,您再次强制使用与号或问号。因此,您需要类似view.php??file=...
或view.php?.*&file=...
您想要的可能类似于(尽管未经测试,并注意 + 不允许空文件名):
^view\.php\?(?:file=)|(?:.*&file=)([a-zA-Z0-9_]+)(?:&|$)
前导^
意味着您的整个字符串以 view.php 开头,这可能不是真的。同样在您的正则表达式中,您的假设file
是最后一个 GET 等。
此正则表达式应匹配file
任何字符串中的获取值
view\.php\?.*?\bfile=(\w*)\b