正则表达式找到包括" - "

时间:2016-08-02 04:17:11

标签: python regex

我有以下正则表达式(来自此链接: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 个答案:

答案 0 :(得分:1)

你可以尝试这样的事情:

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

注意[\w\-]+,它允许匹配单词字符和破折号。

为了将来的可读性,您可能还需要调查re.X/re.VERBOSE,这可以使正则表达式更具可读性。