我的正则表达式中的负前瞻被忽略了。我的语法不正确吗?
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']",)
什么给了?任何帮助将不胜感激。
请您参考如下方法:
