Python 使用正则表达式从URL提取子字符串
这里是Regex新手。我有一堆URL,需要从中提取一些使用正则表达式的子字符串 例如:如果我的URL是Python 使用正则表达式从URL提取子字符串,python,regex,python-2.7,Python,Regex,Python 2.7,这里是Regex新手。我有一堆URL,需要从中提取一些使用正则表达式的子字符串 例如:如果我的URL是https://chrome.google.com/webstore/detail/vt-hokie-stone-theme/enmbbbhbkojhbkbolmfgbmlcgpkjjlja?hl=en-美国,我需要提取1vt hokie stone主题第二部分和第二部分enmbbbhbkojhbkbkbbolmfgbmlcgpkjjjlja将此url分成两个单独的变量 我的URL的初始部分始终
https://chrome.google.com/webstore/detail/vt-hokie-stone-theme/enmbbbhbkojhbkbolmfgbmlcgpkjjlja?hl=en-美国
,我需要提取1<代码>vt hokie stone主题第二部分和第二部分enmbbbhbkojhbkbkbbolmfgbmlcgpkjjjlja
将此url分成两个单独的变量
我的URL的初始部分始终保持不变,因此我构建了以下正则表达式detail\/([a-z0-9\-]+)\/([a-z]+)
,我正在尝试
我看到regex.findall(string)
给了我想要的,但我有以下问题:
regex.findall(string)
命令将输出为[(u'vt-hokie-stone-theme',u'enmbbbhbkojhbkbbolmfgbmlcgpkjjjjlja')]
。我知道前面的u
表示unicode,但我不希望它出现在我的输出中。如何删除它try:
var1, var2 = re.search(r"detail\/([a-z0-9\-]+)\/([a-z]+)", my_url).groups()
except AttributeError:
var1 = var2 = ""
您可以使用下面的正则表达式来实现同样的效果。如果您确定URL的格式,您可以尝试下面的方法。请注意,最后一个捕获th groups base的.*regex是非贪婪的,而捕获group主题的.*regex是非贪婪的
>>> var = 'https://chrome.google.com/webstore/detail/vt-hokie-stone-theme/enmbbbhbkojhbkbolmfgbmlcgpkjjlja?hl=en-U'
>>> match = re.match(r"(?P<base>.*/webstore/.*?/)(?P<theme>.*?)/(?P<tail>.*)",var);
>>> if match:
... print match.group('base')
... print match.group('theme')
... print match.group('tail')
https://chrome.google.com/webstore/detail/
vt-hokie-stone-theme
enmbbbhbkojhbkbolmfgbmlcgpkjjlja?hl=en-U
>>var='0https://chrome.google.com/webstore/detail/vt-hokie-stone-theme/enmbbbhbkojhbkbolmfgbmlcgpkjjlja?hl=en-U'
>>>match=re.match(r“(?P.*/webstore/*?/)(?P.*?/(?P.*”),var);
>>>如果匹配:
... 打印匹配。组('base'))
... 打印匹配。组('主题')
... 打印匹配。组('tail'))
https://chrome.google.com/webstore/detail/
霍基斯通主题酒店
Enmbbbhbkojhbkbbolmfgbmlcgpkjjjlja?hl=en-U
如果regexp不匹配,此操作将中断。感谢您的注意。编辑了答案,以便在regexp不匹配的情况下处理异常。谢谢,这很有帮助!:)