如何找到与某个字符串不匹配的任何内容?
我试图让比赛但我有与语法的麻烦,下面我使用python,但它可以是任何语言,我只需要正确的正则表达式的语法:如何找到与某个字符串不匹配的任何内容?
import re
p = re.compile('foo%22([^%22])*')
input = "foo%22somedata%2Bgoeshere%22testbarbaz"
result = re.findall(p, input)
我想提取“somedata%2Bgoeshere”。基本上我想要%22之间的东西。所以我尝试的正则表达式(上面)不工作的B/C,'不'操作员说'不%','不是2'和'不是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']
你想要的东西是什么,是不是返回结果的第一个和最后一个元素。 KISS
所以我提到我的代码片段在问题是用Python编写的,但我真正需要的只是正确的正则表达式。 @ phihag的答案适合我。 – codecraig
这是我拿
mo = re.search("%22(.*?)%22", input)
print mo.groups(1)
重要的是你限制.*
与?
,使之尽快停止,因为它可以匹配闭幕“%22”。
+1:看起来正是OP想要达到的目标(我记得在发现'。*?'之前自己也有同样的问题) – Steven
谢谢@phihag,这似乎工作! – codecraig
@codecraig - 如果它适合你,请不要忘记接受答案。 –
@Justin Morgan - 我知道,它告诉我我必须等6分钟才能接受,所以我在浏览器中打开了一个标签,提醒我回来(我现在有:) – codecraig