2016-08-02 23 views
1

私は(このリンクから:get python dictionary from string containing key value pairs)正規表現下記持っ正規表現検索ワード「 - 」

r"\b(\w+)\s*:\s*([^:]*)(?=\s+\w+\s*:|$)" 

ここでは説明です:

\b   # Start at a word boundary 
(\w+)  # Match and capture a single word (1+ alnum characters) 
\s*:\s*  # Match a colon, optionally surrounded by whitespace 
([^:]*)  # Match any number of non-colon characters 
(?=   # Make sure that we stop when the following can be matched: 
\s+\w+\s*: # the next dictionary key 
|   # or 
$   # the end of the string 
)   # End of lookahead 

私の質問は、私の文字列がある場合ということです間に " - "のある単語、例えば:movie-night、上記の正規表現は動作していないと私はそれがb(\w+)のためだと思う。 " - "を含む単語を扱うために、この正規表現をどのように変更できますか?私はb(\w+-)を試しましたが、動作しません。あなたの助けを前もってありがとう。

+1

「b([\ - ] +)」と試してみてください。 – shantanoo

+0

あなたの例でコロンはどこですか?あなたの正規表現は1つ必要ですか? –

答えて

1

あなたはこのような何かを試みることができる:

r"\b([\w\-]+)\s*:\s*([^:]*)(?=\s+\w+\s*:|$)" 

注単語文字とダッシュの両方を合わせることができます[\w\-]+、。

今後の読みやすさのために、re.X/re.VERBOSEを調べて正規表現を読みやすくすることもできます。

+2

将来の追加のためにハイフンをエスケープすることをお勧めします: '' [\ w \ - ] + '' ' – Owen

+0

Thanks Elizafox&Owen。それは期待どおりに動作します! – Leo