1

re.match()。groups()を使用して、文字列から選択した情報を削除しようとしています。

s = "javascript:Add2ShopCart(document.OrderItemAddForm,%20'85575',%20'Mortein%20Mouse%20Trap%201%20pack',%20'',%20'$4.87');"

私が欲しい結果は次のとおりです。

("Mortein%20Mouse%20Trap%201%20pack", "4.87")

だから私は試してきました:

re.match(r"(SEPARATOR)(SEPARATOR)", s).groups() #i.e.:
re.match(r"(\',%20\')(\$)", s).groups()

私はreのドキュメントを見てみましたが、私のregexingスキルは非常に劣っているため、あまり役に立ちません。

その他のサンプル入力:

javascript:Add2ShopCart(document.OrderItemAddForm,%20'85575',%20'Mortein%20Mouse%20Trap%201%20pack',%20'',%20'$4.87');

javascript:Add2ShopCart(document.OrderItemAddForm_0,%20'85575',%20'Mortein%20Mouse%20Trap%201%20pack',%20'',%20'$4.87');

javascript:Add2ShopCart(document.OrderItemAddForm,%20'8234551',%20'Mortein%20Naturgard%20Fly%20Spray%20Eucalyptus%20320g',%20'',%20'$7.58');

javascript:Add2ShopCart(document.OrderItemAddForm,%20'4204369',%20'Mortein%20Naturgard%20Insect%20Killer%20Automatic%20Outdoor%20Refill%20152g',%20'',%20'$15.18');

javascript:Add2ShopCart(document.OrderItemAddForm_0,%20'4204369',%20'Mortein%20Naturgard%20Insect%20Killer%20Automatic%20Outdoor%20Refill%20152g',%20'',%20'$15.18');

javascript:Add2ShopCart(document.OrderItemAddForm,%20'4220523',%20'Mortein%20Naturgard%20Outdoor%20Automatic%20Prime%201%20pack',%20'',%20'$32.54');
4

3 に答える 3

2
re.findall(r"""
   '          #apostrophe before the string Mortein
   (          #start capture
   Mortein.*? #the string Moretein plus everything until...
   )          #end capture
   '          #...another apostrophe
   .*         #zero or more characters
   \$         #the literal dollar sign
   (          #start capture
   .*?        #zero or more characters until...
   )          #end capture
   '          #an apostrophe""", s, re.X)

Morteinこれは、および$金額をタプルとして持つ配列を返します。以下も使用できます。

re.search(r"'(Mortein.*?)'.*\$(.*?)'", s)

これは一致を返します。 .group(1)です。 Moretein_ .group(2)_ 一致した文字列全体です。$.group(0)

于 2013-02-13T15:49:51.317 に答える
1

使用できます

javascript:Add2ShopCart.*?,.*?,%20'(.*?)'.*?\$(\d+(?:\.\d+)?)

グループ 1,2 は、必要なものをキャプチャします。

于 2013-02-13T15:48:32.143 に答える
0

正規表現のワンショットではありません。

In [16]: s="""s = javascript:Add2ShopCart(document.OrderItemAddForm,%20'85575',%20'Mortein%20Mouse%20Trap%201%20pack',%20'',%20'$4.87');"""

In [17]: arr=s.split("',%20'")

In [18]: arr[1]
Out[18]: 'Mortein%20Mouse%20Trap%201%20pack'

In [19]: re.findall("(?<=\$)[^']*",arr[3])
Out[19]: ['4.87']
于 2013-02-13T15:46:03.037 に答える