Python正则表达式被括号([])混淆了?

JS.*_*JS. 3 python regex

python是混淆的,还是程序员?

我有很多这样的话:

some_dict[0x2a] = blah
some_dict[0xab] = blah, blah
Run Code Online (Sandbox Code Playgroud)

我想做的是将十六进制代码转换为全部大写,如下所示:

some_dict[0x2A] = blah
some_dict[0xAB] = blah, blah
Run Code Online (Sandbox Code Playgroud)

所以我决定调用正则表达式.通常,我只是使用我的编辑器的regexps(xemacs)来做这件事,但转换为大写的需要将一个推入Lisp.....好吧...... Python怎么样?

所以我把一个不起作用的短脚本鞭在一起.我已经将代码压缩到这个示例中,这也不起作用.在我看来,Python的正则表达式被代码中的括号弄糊涂了.是我还是Python?

import fileinput
import sys
import re


this = "0x2a"
that = "[0x2b]"

for line in [this, that]:
    found = re.match("0x([0-9,a-f]{2})", line)

    if found:
        print("Found: %s" % found.group(0))
Run Code Online (Sandbox Code Playgroud)

(我正在使用()分组结构,所以我没有大写'0x'中的'x'.)

此示例仅打印0x2a值,而不是0x2b.这是正确的行为吗?

我可以通过将匹配表达式更改为:

    found = re.match("\[0x([0-9,a-f]{2}\])", line)
Run Code Online (Sandbox Code Playgroud)

但我只是想知道是否有人可以让我对这里发生的事情有所了解.

在Linux上运行Python 2.6.2.

Ale*_*lli 7

re.match从字符串的开头匹配.re.search而是使用"匹配字符串中任何位置的第一个匹配项".关于文档的关键点在这里.