Python正则表达式:提取链接

Python正则表达式:提取链接,python,regex,string,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中,如果2)永不改变,那么获得1)的最佳方法

我有这样的想法:

javascript:ColdFusion.Window.show('theformats');ColdFusion.navigate('exportformats.cfm?id=1900067&expformat=bibtex','theformats');
让我们将其分为两部分:

1) 'exportformats.cfm?id=1900067&expformat=bibtex' 2) 所有其他的,左右的

在Python中,如果2)永不改变,那么获得1)的最佳方法是什么


到目前为止,我已经尝试过在字符串中“查找”[ColdFusion.navigate(“]),并从那里切片到[”,“],但我真的很想学习如何为它编造最好的正则表达式,请用Python来实现。

您不需要正则表达式。通常,当面对成对的符号时,您可以这样做:

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

您不需要正则表达式。通常,当面对成对符号时,您可以执行以下操作:

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

我相信你在追求:

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

我相信你在追求:

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

我同意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]

我同意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]

这也许是最好的解决方案,当然,除非1)里面有单引号。这也许是最好的解决方案,当然,除非1)里面有单引号。