下面是我提取URL的正则表达式
url_extractor re.compile(r'((?:www.|http:|https:)[^s]+)', re.IGNORECASE)
mystring = """https://myname.abc.comsomename: """
上面的正则表达式提取 URL 和.com
后存在的任何字符,在本例中为somename
:https://myname.abc.comsomename
。
我只想提取直到.com
或.org
(含)如果存在。如果 URL 不以.com
或.org
结尾,我想提取直到空格。
所以在上面的例子中,预期的结果https://myname.abc.com
。
如果 URLhttps://myname.abc.xyz somename
,预期结果为https://myname.abc.xyx
.
如何修改上面的正则表达式?
您可以使用
re.compile(r'(?:www.|https?:)S*?(?:.(?:com|org)|(?=s)|$)', re.IGNORECASE)
查看正则表达式演示
详
(?:www.|https?:)
-www.
或http:
或https:
S*?
- 0 个或多个非空格字符,尽可能少(?:.(?:com|org)|(?=s)|$)
-.
,然后com
或org
,或者紧跟空格或字符串末尾的位置。
蟒蛇演示:
import re
text = r'somename https://myname.abc.comsomename: if the URL is https://myname.abc.xyz somename..'
rx = re.compile(r'(?:www.|https?:)S*?(?:.(?:com|org)|(?=s)|$)', re.IGNORECASE)
print ( rx.findall(text) )
# => ['https://myname.abc.com', 'https://myname.abc.xyz']