python regexp中的负前瞻问题

python regexp中的负前瞻问题,python,regex,python-2.7,negative-lookahead,Python,Regex,Python 2.7,Negative Lookahead,我的regexp中的负前瞻被忽略。我的语法不正确吗 number_with_no_trailing_tag = re.compile(r"(\[number\sraw\='.+?'\])(?!\s\[)") strings = [ "[oper raw='+'] [number raw='9.8'] [units raw='m']", "foo [number raw='9.8'] bar", "[number raw='9.8'] bar", "foo [nu

我的regexp中的负前瞻被忽略。我的语法不正确吗

number_with_no_trailing_tag = re.compile(r"(\[number\sraw\='.+?'\])(?!\s\[)")

strings = [
    "[oper raw='+'] [number raw='9.8'] [units raw='m']",
    "foo [number raw='9.8'] bar",
    "[number raw='9.8'] bar",
    "foo [number raw='9.8']",
    "[number raw='9.8']",
    "[oper raw='+'] [number raw='9.8']",
    "[number raw='9.8'] [units raw='m']"]

matches = [number_with_no_trailing_tag.search(st) for st in strings]

for match in matches:
    if match is not None:
        print match.groups()
我的输出是:

("[number raw='9.8'] [units raw='m']",)
("[number raw='9.8']",)
("[number raw='9.8']",)
("[number raw='9.8']",)
("[number raw='9.8']",)
("[number raw='9.8']",)
("[number raw='9.8'] [units raw='m']",)
它匹配所有字符串,而我只希望得到字符串的匹配[1:6]。我的预期产出是:

("[number raw='9.8']",)
("[number raw='9.8']",)
("[number raw='9.8']",)
("[number raw='9.8']",)
("[number raw='9.8']",)

有什么好处?任何帮助都将不胜感激。

您需要将
+?
部分更改为否定字符类

re.compile(r"(\[number\sraw='[^']+'])(?!\s\[)")

您希望得到什么?对不起,我发布了我的输出,但没有发布我的预期输出。不过现在已经解决了。谢谢你提醒我编辑ThoughtThank。这就解决了问题。最后我终于实现了我的终极目标:
number\u with\u no\u nexted\u tags=re.compile(r)(?哦,谢谢你让我指向eval.in,我一直想要这样的东西,因为你不能在jsbin中发布node.js代码,等等。