我是Python-regex的新手,所以请耐心听我说...
我有一个很长的多行字符串,其中我必须替换[...]的目录部分字符串与其他内容一起使用,但前提是它们不是以“file://‘,so例如”开头。
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:不匹配的组“。你知道我做错了什么吗?
谢谢!
alessandro
发布于 2012-05-16 16:25:07
第二组中缺少[]运算符:
'\[\[(?!file:)(^])*应该是
'\[\[(?!file:)([^\]]*)'当你有很多转义时,最好使用原始字符串:
re.sub(r'\[\[(?!file:)([^\]]*)', r"found:<\1>", s)发布于 2012-05-16 16:22:52
由于转义,您的方括号不匹配
https://stackoverflow.com/questions/10614524
复制相似问题