Fri*_*its 6 python regex youtube url
我正在制作一个正则表达式,所以我可以在用户发布的一段HTML文本中找到youtube链接(可以是多个).
目前我正在使用以下正则表达式将"http://www.youtube.com/watch?v=-JyZLS2IhkQ"更改为显示相应的YouTube视频:
return re.compile('(http(s|):\/\/|)(www.|)youtube.(com|nl)\/watch\?v\=([a-zA-Z0-9-_=]+)').sub(tag, value)
Run Code Online (Sandbox Code Playgroud)
(变量'tag'是html的一点,所以视频有效,'值'是用户帖子)
现在这个工作..直到网址是这样的:
的 'http://www.youtube.com/watch V = -JyZLS2IhkQ及功能...?'
现在我希望你们能帮助我找出如何匹配'&feature ...'部分,以便它消失.
示例HTML:
No replies to this post..
Youtube vid:
http://www.youtube.com/watch?v=-JyZLS2IhkQ
More blabla
Run Code Online (Sandbox Code Playgroud)
谢谢你的想法,非常感谢
斯特凡
我在这里解决它:
import re
def youtube_url_validation(url):
youtube_regex = (
r'(https?://)?(www\.)?'
'(youtube|youtu|youtube-nocookie)\.(com|be)/'
'(watch\?v=|embed/|v/|.+\?v=)?([^&=%\?]{11})')
youtube_regex_match = re.match(youtube_regex, url)
if youtube_regex_match:
return youtube_regex_match
return youtube_regex_match
Run Code Online (Sandbox Code Playgroud)
测试:
youtube_urls_test = [
'http://www.youtube.com/watch?v=5Y6HSHwhVlY',
'http://youtu.be/5Y6HSHwhVlY',
'http://www.youtube.com/embed/5Y6HSHwhVlY?rel=0" frameborder="0"',
'https://www.youtube-nocookie.com/v/5Y6HSHwhVlY?version=3&hl=en_US',
'http://www.youtube.com/',
'http://www.youtube.com/?feature=ytca']
for url in youtube_urls_test:
m = youtube_url_validation(url)
if m:
print('OK {}'.format(url))
print(m.groups())
print(m.group(6))
else:
print('FAIL {}'.format(url))
Run Code Online (Sandbox Code Playgroud)
小智 5
您应将正则表达式指定为原始字符串。
您没有逃脱每个字符长相特别,只是那些它是。
(foo|)
您可以使用而不是指定一个空的分支()使某些内容可选?
。
如果要包含-
在字符集中,则必须对其进行转义或将其放在右方括号之后。
您可以使用特殊字符集,例如\w
(equals [a-zA-Z0-9_]
)来缩短正则表达式。
r'(https?://)?(www\.)?youtube\.(com|nl)/watch\?v=([-\w]+)'
Run Code Online (Sandbox Code Playgroud)
现在,为了匹配整个URL,您必须考虑在输入中可以或不能遵循的内容。然后,将其放入前瞻性组(您不想使用它)。
在这个例子中,我把一切的除了-
,=
,%
,&
和字母字符来结束URL(懒得去想任何困难)。
v参数到URL末尾之间的所有内容均被贪婪地消耗.*?
。
r'(https?://)?(www\.)?youtube\.(com|nl)/watch\?v=([\w-]+)(&.*?)?(?=[^-\w&=%])'
Run Code Online (Sandbox Code Playgroud)
不过,我不会对此总体解决方案抱有太大的信心。众所周知,用户输入很难进行可靠地解析。
归档时间: |
|
查看次数: |
5699 次 |
最近记录: |