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

标签 python regex

我希望能够使用正则表达式替换文件中的字符串。但我的功能没有找到匹配项。所以我模拟了一个测试来复制正在发生的事情。

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

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

我想用其他内容替换“TYPE=PUZZLE&PREFIX=EXPRESS&”部分。注意。该字符串在原始文件中并不总是完全包含“PUZZLE”和“PREFIX”,但它将采用这种格式)。

所以首先我尝试测试我是否获得了正确的匹配。

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

认为 ([\^&]*) 将匹配任意数量的不是&符号的字符。 但我总是得到“不匹配!!”。

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

返回“TYPE=”

为什么我的第一个不起作用?

最佳答案

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

尝试将其替换为 ([^&]*)

关于python - 为什么这个正则表达式在这个字符串中不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4861086/

相关文章:

python - 如何在 Django 中导入另一个类模型中的值?

python - 如何分组并一次加入多列的多行?

python - 从原始二进制图像数据到 Python 中的 PNG

python - Matplotlib Python

javascript - 正则表达式用空格替换字符

python - Python 中的 8 Queens 解决方案

ios - 这两个正则表达式匹配什么?

C++11 正则表达式,非贪婪

regex - 从单元格区域中删除非数字字符

Javascript:正数和负数的正则表达式,但没有小数点