这个正则表达式是什么意思?

时间:2012-09-01 09:30:24

标签: python regex

我在正则表达式上非常弱,现在我正在调试一些代码,代码是用类似的表达式搜索字符串:

r"coding[:=]\s*([-\w.]+)"

它会搜索什么类型的字符串?

对我而言,它似乎匹配如下:

coding= xxxxx

但我不知道神秘人物的确切含义。任何人都可以解释一下细节吗?

3 个答案:

答案 0 :(得分:8)

让我们打破这个:

  • coding:文字文字匹配,只有“编码”一词会
  • [:=]:字符组,冒号“:”或等号“=”匹配
  • \s*:0个或更多空格字符;空格和制表符,但如果这样配置,也可以匹配换行符。
  • (..):匹配的组,内容将作为匹配组提供,以便进一步处理。
  • [-\w.]+:组中的一个或多个字符,匹配短划线“ - ”,点“。”或任何单词字符; \w是一个字符类,通常匹配字母'a'到'z'(大写和小写),数字'0'到'9'和下划线“_”。

如果你打开unicode支持(默认情况下在Python 3中打开),\w类会捕获更多内容。在Unicode数据库中归类为字母数字的任何字符都将匹配。

比赛示例:

  • “coding = foobar320_42spam_eggs”,群组为foobar320_42spam_eggs
  • “编码:某事或其他”,组将为something-or-other
  • “coding:whatever.42”,group将为whatever.42

答案 1 :(得分:2)

它将匹配以下内容:

coding +其中:= +零个或多个空格(\s =空格,制表符,任何空白字符)+某些文字,也可能包含.-

答案 2 :(得分:1)

正则表达式的示例表达式http://rubular.com/r/cqE6HTD8Vb