用python中的正则表达式操作解析URL

用python中的正则表达式操作解析URL,python,regex,python-2.7,python-3.x,pyspark,Python,Regex,Python 2.7,Python 3.x,Pyspark,我有如下数据: 资料 我想检查url中的第一个+符号并向后移动,直到找到一个特殊字符,如/或?或=或任何其他特殊字符,并从该字符开始,一直到找到空格或行尾或&或/。我的输出应该是 parsed abcd efgh fghki qwert 我的目标是在URL中找到first+,然后返回,直到找到一个特殊的字符,然后返回,直到找到一个行尾、空格或&符号 我对regex还不熟悉,而且还在学习,因为它有点复杂,我发现写起来很困难。有谁能帮我用python写一个正则表达式来解析这些吗 谢谢,因此解析所需

我有如下数据:

资料

我想检查url中的第一个+符号并向后移动,直到找到一个特殊字符,如/或?或=或任何其他特殊字符,并从该字符开始,一直到找到空格或行尾或&或/。我的输出应该是

parsed
abcd
efgh
fghki
qwert
我的目标是在URL中找到first+,然后返回,直到找到一个特殊的字符,然后返回,直到找到一个行尾、空格或&符号

我对regex还不熟悉,而且还在学习,因为它有点复杂,我发现写起来很困难。有谁能帮我用python写一个正则表达式来解析这些吗


谢谢

,因此解析所需字符的适当正则表达式是
(.\+)+)
我在这里使用Javascript正则表达式。但是,您也应该能够在py中实现

此正则表达式将从您的第一个url中提取
a+b+c+d
。 要从
a+b+c+d
获取
abcd
,需要对其进行多一点处理


稍后,我将使用py函数更新它。

以下是适用于示例用例的表达式:

>>> import re
>>>
>>> l = [
...     "http://hostname.com/part1/part2/part3/a+b+c+d",
...     "http://m.hostname.com/part3.html?nk!e+f+g+h&_junk",
...     "http://hostname.com/as/ck$st=f+g+h+k+i/",
...     "http://www.hostname.com/p-l-k?wod=q+w+e+r+t africa"
... ]
>>>
>>> pattern = re.compile(r"[^\w\+]([\w\+]+\+[\w\+]+)(?:[^\w\+]|$)")
>>> for item in l:
...     print("".join(pattern.search(item).group(1).split("+")))
... 
abcd
efgh
fghki
qwert
其基本思想是捕获字母数字和介于非字母数字和非加号字符或字符串末尾之间的加号字符。然后,按加号拆分并加入


我觉得它可以进一步简化/改进。

这就给出了a+b的输入和输出。不是a+b+c+d@can你认为A、B、C、D是单独的词吗?这里我给出它是为了简化。它是从双方各拿走一封信。我想把这两个词都记下来,直到我们找到一个角色。我的意思是我只是在控制台里做的<代码>变量a=新的RegExp(/(.\+)+)/)<代码>a.exec('http://m.hostname.com/part3.html?nk!e+f+g+h&_junk')Guess,你得到了上面的完整答案。是的,我得到了。非常感谢:)假设我有这样的东西,这个会给出f+g。我知道这不是最初的要求。只是问问而已。我们是否可以在检查first+之后检查-以及?通过不将其单独限制为“-”特殊字符以及除“@Observer”之外的所有字符,您应该适当地将
-
添加到表达式中。例如,对于定义为
pattern=re.compile(r“[^\w\+\-]([\w\+\-]+(?:\+\-)[\w\+\-]+)(?:[^\w\+\-]\$)”
,使用
re.split()
按多个分隔符拆分:
print(“.join(re.split(r“+)”),pattern.search(”http://hostname.com/as/ck$st=f+g-h-k-i/”。第(1)组)将产生
fghki
。希望有帮助。
>>> import re
>>>
>>> l = [
...     "http://hostname.com/part1/part2/part3/a+b+c+d",
...     "http://m.hostname.com/part3.html?nk!e+f+g+h&_junk",
...     "http://hostname.com/as/ck$st=f+g+h+k+i/",
...     "http://www.hostname.com/p-l-k?wod=q+w+e+r+t africa"
... ]
>>>
>>> pattern = re.compile(r"[^\w\+]([\w\+]+\+[\w\+]+)(?:[^\w\+]|$)")
>>> for item in l:
...     print("".join(pattern.search(item).group(1).split("+")))
... 
abcd
efgh
fghki
qwert