正则表达式获取url字符串

时间:2014-01-24 07:55:20

标签: regex preg-match

我试图在[link =和]之间获取youtube网址 使用此代码。为什么不工作?

(?<=[link=\s).*(?=\s])

文字

a very long text before this
    [link=http://www.youtube.com/watch?feature=player_embedded&v=Fh3knetKm5U]and some text here

我需要http://www.youtube.com/watch?feature=player_embedded&v=Fh3knetKm5U

2 个答案:

答案 0 :(得分:0)

简单地说:

\[link=(.*?)\]

你有使用lookbehinds的原因吗?

更重要的是,这似乎是您计划实现文本格式。您是否考虑使用markdownReST等库?

使用上述正则表达式的示例:

>>> import re
>>> p = re.compile(r'\[link=(.*?)\]')
>>> txt = '''a very long text before this
...      [link=http://www.youtube.com/watch?feature=player_embedded&v=Fh3knetKm5U]and some'''
>>> p.findall(txt)
['http://www.youtube.com/watch?feature=player_embedded&v=Fh3knetKm5U']

答案 1 :(得分:0)

你正在不必要地使用前瞻和后视。这些只是为你做的

\[link=(\S+)\]

\[link=([^\]]*)\]

\[link=(.+)\]

\[link=(.*?)\]