Python 如何查找除某个字符串之外的任何匹配项?

Python 如何查找除某个字符串之外的任何匹配项?,python,regex,Python,Regex,我正在尝试匹配,但语法有问题,下面我使用python,但它可以是任何语言,我只需要正确的正则表达式语法: import re p = re.compile('foo%22([^%22])*') input = "foo%22somedata%2Bgoeshere%22testbarbaz" result = re.findall(p, input) 我正在尝试提取“somedata%2bGoesher”。基本上我想要在%22之间的东西。所以我试过的正则表达式(上面)不起作用,因为“not”

我正在尝试匹配,但语法有问题,下面我使用python,但它可以是任何语言,我只需要正确的正则表达式语法:

import re
p = re.compile('foo%22([^%22])*')

input = "foo%22somedata%2Bgoeshere%22testbarbaz"

result = re.findall(p, input)
我正在尝试提取“somedata%2bGoesher”。基本上我想要在%22之间的东西。所以我试过的正则表达式(上面)不起作用,因为“not”操作符说的是“not%”、“not 2”和“not 2”…我想说的是,在看到“%22”之前获取任何内容


提前感谢。

使用积极前瞻:

>>> import re
>>> input = "foo%22somedata%2Bgoeshere%22testbarbaz"
>>> re.findall('foo%22.*?(?=%22)', input)
['foo%22somedata%2Bgoeshere']

你为什么需要正则表达式?只需在
%22

>>> input.split("%22")
['foo', 'somedata%2Bgoeshere', 'testbarbaz']
您需要的内容不是返回结果的第一个和最后一个元素。接吻

这是我的照片

mo = re.search("%22(.*?)%22", input)
print mo.groups(1)

重要的是,你用
限制
*
,以便它在与结束“%22”匹配时立即停止。

+1:似乎正是OP试图实现的目标(我记得在发现
*?
之前我自己也遇到过同样的问题)@codecraig-如果答案对你有效,别忘了接受它。@Justin Morgan——我知道,它告诉我必须等6分钟才能接受,所以我在浏览器中打开了一个标签,提醒我回来(我现在有:)所以我提到我在问题中的代码片段是用python编写的,但我真正需要的只是正确的正则表达式@菲哈格的回答对我有用。