0

python-code-snippet は次のとおりです。

import re

VARS='Variables: "OUTPUTFOLDER=installers","SETUP_ORDER=Product 4,Product 4  Library","SUB_CONTENTS=Product 4 Library","SUB_CONTENT_SIZES=9364256","SUB_CONTENT_GROUPS=Product 4 Library","SUB_CONTENT_DESCRIPTIONS=","SUB_CONTENT_GROUP_DESCRIPTIONS=","SUB_DISCS=Product 4,Product Disc",SUB_FILENAMES='
comp = re.findall(r'\w+=".*?"', VARS)

for var in comp:
    print var

これは現在の出力です:

SUB_CONTENT_DESCRIPTIONS="," 
SUB_CONTENT_GROUP_DESCRIPTIONS=","

ただし、出力ですべての要素を抽出したいので、次のようになります。

"OUTPUTFOLDER=installers"
"SETUP_ORDER=Product 4, Product 4 Library"
"SUB_CONTENTS=Product 4"
"SUB_CONTENT_SIZES=9364256"
...

私の正規表現パターンの何が問題になっていますか?

4

3 に答える 3

1

これを試すことができます:

 comp = re.findall(r'"(.*?)"', VARS)
 print [x for x in comp]

大まかに言えば、貪欲でない方法で二重引用符内にあるものをすべて取得しています。

于 2013-04-23T12:15:17.690 に答える
1

次の正規表現を使用します。

r'"\w+?=.*?"'

私の正規表現とあなたの正規表現の違いは、自分の目で確かめてください。

r'"\w+?=.*?"' # mine
r'\w+=".*?"' # your's

たった一つ"

出力:

>>> regex = re.compile(r'"\w+?=.*?"')
>>> regex.findall(string)
[u'"OUTPUTFOLDER=installers"', u'"SETUP_ORDER=Product 4,Product 4 Library"',  
 u'"SUB_CONTENTS=Product 4 Library"', u'"SUB_CONTENT_SIZES=9364256"',
 u'"SUB_CONTENT_GROUPS=Product 4 Library"', u'"SUB_DISCS=Product 4,Product Disc"']
于 2013-04-23T12:12:07.770 に答える