Python 用正则表达式解析URL

Python 用正则表达式解析URL,python,regex,conditional-statements,Python,Regex,Conditional Statements,我试图在正则表达式中组合if-else,基本上,如果字符串中存在一些模式,则捕获一个模式,如果不存在,则捕获另一个模式 字符串为: “我想抽调周围的工作人员” 因此,如果在字符串中检测到“?”,则正则表达式应捕获“?”标记之后的所有内容;如果没有,那就从头抓起 我使用了:”(.\?*)(\?*&.*)(^&.*) 但它不起作用 有什么建议吗 谢谢 正则表达式可能不是这个问题的最佳解决方案……为什么不呢 myurl.split(“?”,1) 如果这真的是你想要做的 或者像其他人建议的那样 from

我试图在正则表达式中组合if-else,基本上,如果字符串中存在一些模式,则捕获一个模式,如果不存在,则捕获另一个模式

字符串为: “我想抽调周围的工作人员”

因此,如果在字符串中检测到“?”,则正则表达式应捕获“?”标记之后的所有内容;如果没有,那就从头抓起

我使用了:
”(.\?*)(\?*&.*)(^&.*)
但它不起作用

有什么建议吗


谢谢

正则表达式可能不是这个问题的最佳解决方案……为什么不呢

myurl.split(“?”,1)

如果这真的是你想要做的

或者像其他人建议的那样

from urlparse import urlparse
print urlparse(my_url)
此正则表达式:

(^[^?]*$|(?<=\?).*)
(^[^?]*$|)(?使用:


最后一行是键/值对的字典。

如果您可以保证以后不会有任何其他问号,您可以使用类似于
r.*?\([^?]+)的内容
。感谢您的回复。但这仍然捕获了“..”部分。但我实际上希望捕获它发生在未检测到问号的情况下。为什么不使用?它允许您获取URL的所有部分。原因可能重复。我不仅要解析和提取URL的部分,还要解析查询和路径的部分。因此,URL字符串如上所述,但路径字符串为'/company/Analytics/GetService',查询字符串为'companyId=4343&type=0&page=11'是的,这里想到了一些关于正则表达式的名言(+1)
>>> import urlparse
>>> parse_result = urlparse.urlparse('https://www.searchpage.com/searchcompany.aspx?
companyId=41490234&page=0&leftlink=true')

>>> parse_result
ParseResult(scheme='https', netloc='www.searchpage.com', 
path='/searchcompany.aspx', params='', 
query='companyId=41490234&page=0&leftlink=true', fragment='')

>>> urlparse.parse_qs(parse_result.query)
{'leftlink': ['true'], 'page': ['0'], 'companyId': ['41490234']}