正在寻找一个正则表达式来删除q =之前和之后的所有内容,并且包括& ct形成以下URL。
答案 0 :(得分:1)
>>> re.match(r'http://.*?q=([^&]*).*?', url).group(1)
'http://www.foo.com/bar-foo-bar-foo-bar-foo-bar-1-ea-from-foo.html'
如果它有任何转义实体,例如&,你也可能还需要对网址进行解码。或%20。这是依赖于语言的。
在PHP中
preg_match('/^http:\\/\\/.*?q=([^&]*)/', $url, $matches);
print($matches[1]);
答案 1 :(得分:1)
Marco,他不能使用反名(命名组)吗?
您可以为标准正则表达式方言中的组指定反向名称:http://www.regular-expressions.info/named.html
本节说:
Python的sub()函数允许你 将命名组引用为\ 1或\ g。 这在PHP中不起作用。在PHP中,你 可以使用双引号字符串 使用$ regs参数进行插值 你传递给 pcre_match():$暂存器[ '名称']
所以这是你原来的:
?/ ^ HTTP:\ / \ / Q =([^&安培;])/
这可能有效:
?/ ^ HTTP:\ / \ / Q =(\ G:[^&安培;])/
这有意义吗?