2011-07-19 18 views
0

私はJavascriptの以下のビットからの抽出物にProductValueをしようとしている:正規表現を使用してJavascript値を抽出するにはどうすればよいですか?

<script language="javascript" type="text/javascript"> 
lpAddVars('page','Section','womens'); 
lpAddVars('page','CartTotal','0.00'); 

    lpAddVars('page','ProductID','43577'); 
    lpAddVars('page','ProductValue','128.00'); 

</script> 

私は美しいスープは、私はこれを行うための最善の方法は、正規表現を使用するかもしれないと思うので、JavaScriptを解析するとは思いませんしかし私は非常に新しいと私は今までしようとしたことはないように働くように再。どのようにこれを達成するためのアドバイスや助け?

ありがとうございます!

答えて

1

これは動作するはずです:

import re 

javascript_text = ''' 
    <script language="javascript" type="text/javascript"> 
    lpAddVars('page','Section','womens'); 
    lpAddVars('page','CartTotal','0.00'); 

     lpAddVars('page','ProductID','43577'); 
     lpAddVars('page','ProductValue','128.00'); 

    </script> 
''' 

product_value = re.findall(r"ProductValue.*,['|\"](.*)['|\"]", javascript_text) 

# at this point, product_value = ['128.00'] 

がだから何である "ProductValue *、 '| \。" [' | \ "]" でもやって?

"ProductValue *、 '| \。" [' | \ "]"

ProductValue - あなたは

を探しているだけで、文字列リテラル* - 私たちは、任意の量をしたいです。文字、スペース、単一引用符ので、どんな

、 - 私たちは可能停止されます、我々は ""

[ '| \ "]に達すると、すべての文字に一致するように、 "*。" - 私たちを一重引用符または二重引用符のいずれかと一致させたい

(。*) - これは実際に関心のあるビットで、任意の文字にすることができます

['| \ "] - もう一度、クローズ単一または二重引用符

この時点から

、私のようなものだろう:

product_values = [] 
for value in product_value: 
    value = value.strip() # get rid of any excess whitespace 
    value = float(value) # ProductValue appears to be a float of some sort 
    product_values.append(value) # store the value 
+0

ありがとう、これは素晴らしいです! SOの答えの質は私を驚かせることを決して決してしない:) –

0
/'ProductValue'\s*,\s*(.*?)\s\)/ 
+0

感謝を!私は実際にこれを実装する方法がわからないという正規表現についてはほとんど知らない。 're.search("/'ProductValue' \ s *、\ s *(?*))\ s \)/ "、html)'? –

関連する問題