我试图在[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
答案 0 :(得分:0)
简单地说:
\[link=(.*?)\]
你有使用lookbehinds的原因吗?
更重要的是,这似乎是您计划实现文本格式。您是否考虑使用markdown或ReST等库?
使用上述正则表达式的示例:
>>> 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=(.*?)\]