Python RegEx:提取链接

时间:2012-07-21 19:00:59

标签: python regex string

我喜欢这个:

javascript:ColdFusion.Window.show('theformats');ColdFusion.navigate('exportformats.cfm?id=1900067&expformat=bibtex','theformats');

我们将其分为两部分:

1)'exportformats.cfm?id = 1900067& expformat = bibtex' 2)其余的,左右两边

在Python中获得1)的最佳方法2)永远不会改变?

到目前为止,我已经尝试“查找”[字符串中的ColdFusion.navigate(']并从那里切片直到[',']但我真的想学习如何为它编写最好的RegEx并且做所以在Python中,请。

4 个答案:

答案 0 :(得分:1)

您不需要正则表达式。通常情况下,当遇到配对符号时,您可以执行以下操作:

mystr = "javascript:ColdFusion.Window.show('theformats');ColdFusion.navigate('exportformats.cfm?id=1900067&expformat=bibtex','theformats');"
mystr.split("'")[3] # Returns exportformats.cfm?id=1900067&expformat=bibtex

答案 1 :(得分:1)

>>> import re
>>> sample = "javascript:ColdFusion.Window.show('theformats');ColdFusion.navigate('exportformats.cfm?id=1900067&expformat=bibtex','theformats');"
>>> regex = r"javascript:ColdFusion\.Window\.show\('theformats'\);ColdFusion.navigate\('([^']+)','theformats'\);"
>>> print re.match(regex, sample).group(1)
'exportformats.cfm?id=1900067&expformat=bibtex'

答案 2 :(得分:1)

我同意arxanas的回答,但如果您的1)可能包含单引号或其他字符:

str = "javascript:ColdFusion.Window.show('theformats');ColdFusion.navigate('exportformats.cfm?id=1900067'&expformat=bibtex','theformats');"
str = str.split("javascript:ColdFusion.Window.show('theformats');ColdFusion.navigate('")[1].split("','theformats');")[0]

http://codepad.org/lAk5d6ZV

答案 3 :(得分:0)

我相信你的追随者:

re.search(r"ColdFusion.navigate\('(.*?)'", string).group(1)

或之前和之后:

m = re.match(r"(.*?)ColdFusion.navigate\('(.*?)'(.*)", string)
# m.group(1) == before, m.group(2) = url, m.group(3) = after