我想使用正则表达式操作解析URL的一部分。这可能是一个老问题。但我是正则表达式的新手,并且根据我的要求进行了如此多的搜索而无法找到它。我知道ParseURL可以在这里使用。但我的网址使用得不够合理。假设我的URL如下,
url = https://www.sitename.com/&q=To+Be+Parsed+out&oq=Dont+Need+to+be+parsed
在这里,我想找出& q =何时发生并解析,直到&接下来发生。我想删除+或中间的任何特殊字符。输出应该是,
To Be Parsed out
如果没有匹配项,则应返回原始网址。
我尝试了以下内容,
re.search('q=?([^&]+)&',url).group(0)
返回,
&q=To+Be+Parsed+out&oq=Dont+Need+to+be+parsed
任何人都可以帮我解析这个问题。感谢
答案 0 :(得分:3)
您可以使用re.search()
获取所需的子字符串,然后将所有+
替换为str.replace()
的空格:
re.search(r'/&q=([^&]*)', url).group(1).replace('+', ' ')
re.search(r'/&q=([^&]*)', url).group(1)
获得所需的部分,replace('+', ' ')
执行重播示例:强>
In [56]: url
Out[56]: 'https://www.sitename.com/&q=To+Be+Parsed+out&oq=Dont+Need+to+be+parsed'
In [57]: re.search(r'/&q=([^&]*)', url).group(1).replace('+', ' ')
Out[57]: 'To Be Parsed out'
如果没有匹配项,请抓住AttributeError
引发的re.search.group()
例外情况,例如:
try:
out = re.search(r'/&q=([^&]*)', url).group(1).replace('+', ' ')
except AttributeError:
## No match, do what you want