0

我有这样的:

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

让我们把它分成两部分:

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

鉴于 2) 永远不会改变,在 Python 中获得 1) 的最佳方法是什么?

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

4

4 回答 4

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
于 2012-07-21T19:08:42.730 回答
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'
于 2012-07-21T19:12:16.783 回答
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

于 2012-07-21T19:18:41.247 回答
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
于 2012-07-21T19:10:37.363 回答