1

我在正则表达式方面很薄弱,现在我正在调试一些代码,代码正在使用如下表达式搜索字符串:

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

它搜索什么样的字符串?

对我来说,它似乎与以下内容相匹配:

coding= xxxxx

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

4

3 回答 3

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
  • “编码:whatever.42”,组将是whatever.42
于 2012-09-01T09:36:23.337 回答
2

它将匹配以下内容:

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

于 2012-09-01T09:34:18.233 回答
1

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

于 2012-09-01T09:33:34.200 回答