0

我是 Python 正则表达式新手,所以请耐心等待...

我有一个长的多行字符串,我必须用其他东西替换 [[...]] 字符串的目录部分,但只有当它们不以'file://'开头时,例如

    s= 'chk1 [[file:///excursions/digital/MindMaps/|mm]],
    local file [[file:///inFolder/tmptest/a/fan.txt|a/fan.txt]]
    and nonlocal [[/excursions/books/calsync.txt|/excursions/books]]'

我使用了它的变体(目前替换字符串只是对我发现的内容的检查):

re.sub('\[\[(?!file:)(^])*',"found:< \\1 >",s)

但我得到一个“sre_constants.error:unmatched group”。你知道我做错了什么吗?

谢谢!

亚历山德罗

4

2 回答 2

1

您缺少[]第二组中的运算符:

'\[\[(?!file:)(^])*

应该

'\[\[(?!file:)([^\]]*)'

当您有很多转义时,最好使用原始字符串:

re.sub(r'\[\[(?!file:)([^\]]*)', r"found:<\1>", s)
于 2012-05-16T08:25:07.157 回答
0

由于转义,您的方括号不匹配

于 2012-05-16T08:22:52.357 回答