我希望在python中创建一个正则表达式,以便仅从本文底部的一组URL中提取域。我一直在使用https://regexr.com/以便在应用Series.str.extract()
之前测试我的正则表达式。到目前为止,我已经能够非常接近,但看起来第一个字符(www中的第一个“w”,其中包括一个)没有被捕获。到目前为止,我掌握的正则表达式是:
[^\/\/](\w*.\w*.com|\w*.\w*.org|\w*.\w*.cc|\w*.\w*.ly)
我如何将其从http://css-cursor.techstream.org
修改为仅css-cursor.techstream.org
'https://www.amazon.com/Technology-Ventures-Enterprise-Thomas-Byers/dp/0073523429',
'http://www.interactivedynamicvideo.com/',
'http://www.nytimes.com/2007/11/07/movies/07stein.html?_r=0',
'http://evonomics.com/advertising-cannot-maintain-internet-heres-solution/',
'HTTPS://github.com/keppel/pinn',
'Http://phys.org/news/2015-09-scale-solar-youve.html',
'https://iot.seeed.cc',
'http://www.bfilipek.com/2016/04/custom-deleters-for-c-smart-pointers.html',
'http://beta.crowdfireapp.com/?beta=agnipath',
'https://www.valid.ly?param',
'http://css-cursor.techstream.org'
根据regexr.com的说法,这应该满足您的需求,而且更简单:
(?<=\/\/)([^/?']*)
。毕竟,域实际上就是从//到下一个/或?或字符串的结尾正则表达式是一个硬性要求吗,因为您需要将它与现有正则表达式相结合?如果没有,标准库中有一个简单的工具:
我想正则表达式更快:
对于示例数据,您可以使用}{}和
com
{cc
的替换,并转义点以逐字匹配它要匹配
css-cursor.techstream.org
,可以使用重复组匹配-
或.
注意
[^\/\/]
与[^/]
相同,并且匹配除/
之外的任何字符\w+
匹配1+字字符(?:[.-]\w+)*
可选地重复匹配.
或-
和1+字字符\.
匹配一个升点(注意逃逸)(?:ly|org|com|cc)
非捕获组,匹配任何选项\b
防止部分匹配的单词边界Regex demo
如果还希望与协议匹配,则可以使用所需字符串的捕获组
Regex demo
相关问题 更多 >
编程相关推荐