Regex新手。我有一堆url,我需要从中提取一些子字符串,我正在使用正则表达式。在
如果我的URL是https://chrome.google.com/webstore/detail/vt-hokie-stone-theme/enmbbbhbkojhbkbolmfgbmlcgpkjjlja?hl=en-US
,我需要提取1。vt-hokie-stone-theme
第二部分。enmbbbhbkojhbkbolmfgbmlcgpkjjlja
将此url中的部分分为两个独立的变量。在
我的URL的初始部分始终保持不变,因此我构建了以下正则表达式detail\/([a-z0-9\-]+)\/([a-z]+)
,并尝试在{a1}上执行
我知道regex.findall(string)
给了我想要的,但我有以下问题:
我希望它们在两个独立的变量中,而不是在一个变量中使用列表格式。我该怎么做?
另外,在检查pythonregex时,regex.findall(string)
命令将输出作为[(u'vt-hokie-stone-theme', u'enmbbbhbkojhbkbolmfgbmlcgpkjjlja')]
。{cd8>我不想知道前面的输出。如何删除它?
可以使用tuple/list赋值语法来实现:
unicode字符串只在网站的答案中显示,而在原始python中,返回值将是普通字符串。所以,你不用担心。
我个人认为仅仅从findall()数组的第一个索引中设置变量是没有问题的。但是,如果您确信您的regex总是与url字符串完全匹配,那么您可以尝试一下重新匹配公司名称:
在[22]:正则表达式=重新编译('a(bc)(cd)')
在[23]:正则表达式匹配('abccd')。组()
输出[23]:('bc','cd')
unicode有什么问题?你为什么不想留着呢?我知道regex无论如何只返回ascii,所以这不是问题。不管怎样,如果让它们成为常规字符串非常重要,只需将其转换为字符串即可。在
str(u'abc')=='abc'
您可以使用下面的正则表达式来实现相同的效果。如果你确定了网址的格式,你可以试试下面的方法。请注意,最后一个捕获th groupsbase的正则表达式是非贪婪的,而捕获组主题的正则表达式是非贪婪的。在
相关问题 更多 >
编程相关推荐