2016-06-16 2 views
2

これでタイトルを付ける方法は本当に見つかりませんが、私はコードで何をしようとしているのか説明できます。段落のホット文字の間に複数の文字列を抽出します

私はユーザーのコメントを受け取り、これらの[[キーワード]]修飾子があるかどうかを確認することができます。今私はそれをさらに拡大して1つ以上を許可したい。

これは、ユーザーが行の現在のコードに複数の修飾語を入力した場合に発生します。

#comment in this case is "I want to [[find]] [[this]] [[Special]] word." 
# c is the comment. 
body = c.body 
# Finds the hot word 
result = re.search("\[\[(.*)\]\]", body, re.IGNORECASE) 
print(result) 

期待される結果:

>>>find this Special 

返される結果:

>>>find]] [[this]] [[Special 

は、私はすべての結果を取得し、配列のいくつかの並べ替えにそれを置くことができますどのような方法がありますが、私はどのように測定することができます配列は長さであり、各結果は数値に対応します

どのように動作させたいですか?

print(result[0] +'\n') 
print(result[1] +'\n') 
print(result[2] +'\n') 
>>>find 
>>>this 
>>>Special 

答えて

1

.*は、デフォルトでは貪欲です。 貪欲ではないモードで一致させたいので、できるだけ一致させてください。 .*の代わりに.*?を使用してこれを行うことができます。 re.searchの代わりにすべての一致を得るには、re.findallも使用する必要があります。これは最初の一致のみを返します。

>>> re.findall(r"\[\[(.*?)\]\]", body, re.IGNORECASE) 
['find', 'this', 'special'] 
+0

ありがとう:)私が望んでいたまさに:) – GameGrime

0
import re 

text = 'comment in this case is "I want to [[find]] [[this]] [[Special]] word.' 

result = re.findall("(?:\[\[(.*?)\]\])", text) 

for term in result: 
    print(term + "\n") 
関連する問題