0

私はこれを次のように持っています:

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

これを 2 つの部分に分けてみましょう。

1) 'exportformats.cfm?id=1900067&expformat=bibtex' 2) 左右の残りすべて

2) 変更されないことを考えると、Python で 1) を取得するための最良の方法は何ですか?

これまでのところ、文字列内の [ColdFusion.navigate('] を「検索」し、そこから [','] までスライスしようとしましたが、それに最適な RegEx を作成し、Python で行う方法を学びたいと思っています。 、 お願いします。

4

4 に答える 4

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

正規表現は必要ありません。多くの場合、ペアのシンボルに直面すると、次のようなことができます。

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

私は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 に答える