为什么这个正则表达式在这个字符串中不匹配?

Bee*_*and 2 python regex

我希望能够使用正则表达式替换文件中的字符串.但我的功能是找不到匹配.所以我嘲笑了一个测试来复制正在发生的事情.

我已经定义了要替换的字符串,如下所示:

string = 'buf = O_strdup("ONE=001&TYPE=PUZZLE&PREFIX=EXPRESS&");'

我想用其他东西替换"TYPE = PUZZLE&PREFIX = EXPRESS&"部分.NB.该字符串并不总是在原始文件中包含完全"PUZZLE"和"PREFIX",但它将具有该格式).

所以首先我尝试测试我得到了正确的匹配.

 obj = re.search(r'TYPE=([\^&]*)\&PREFIX=([\^&]*)\&', string)
 if obj:
    print obj.group()
 else:
    print "No match!!"
Run Code Online (Sandbox Code Playgroud)

思考([\^&]*)将匹配任何不是符号的字符数.但我总是得到"不匹配!!".

然而, obj = re.search(r'TYPE=([\^&]*)', string)

给我回复"TYPE ="

为什么我的第一个不工作?

Grz*_*zki 5

由于^符号使用\以下部分进行转义:([\^&]*)匹配这些字符的任何序列:^,&.

尝试替换它([^&]*).