Python中的否定查找断言

Python中的否定查找断言,python,regex,Python,Regex,我正在尝试使用Python正则表达式查找匹配项[abc],但不是[[abc]]] 我使用负查找断言(?过滤掉[[abc]],如下所示 link = r"((?<!\[)\[([^<].+?) \s*([|] \s* (.+?) \s*)?])" compLink = re.compile(link, re.X | re.U) 如何解决此问题?您可以将内部限制为“无括号”,并检查是否有匹配的双精度字符(这更容易用正则表达式表示): (仅以捕获的组为例)我可以通过只有一个(?括号)来找

我正在尝试使用Python正则表达式查找匹配项
[abc]
,但不是
[[abc]]]

我使用负查找断言
(?过滤掉
[[abc]]
,如下所示

link = r"((?<!\[)\[([^<].+?) \s*([|] \s* (.+?) \s*)?])"
compLink = re.compile(link, re.X | re.U)

如何解决此问题?

您可以将内部限制为“无括号”,并检查是否有匹配的双精度字符(这更容易用正则表达式表示):


(仅以捕获的组为例)

我可以通过只有一个
(?括号)来找到匹配项

link = r"((?<!\[)\[([^[].+?) \s*([|] \s* (.+?) \s*)?])"
                      ^
compLink = re.compile(link, re.X | re.U)
link=r”((?您可以尝试以下方法:

(?<!\[)\[([^][]+)]|\[([^][]+)](?!])


(?只要用这个
”((?
并保持表达式的其余部分不变

link = r"((?<!\[)\[([^[].+?) \s*([|] \s* (.+?) \s*)?])"
                      ^
compLink = re.compile(link, re.X | re.U)
(?<!\[)\[([^][]+)]|\[([^][]+)](?!])
\[([^][]+)]         # for the whole substring (with a capturing group)
(?<=\[)[^][]+(?=])  # for the content only (i.e. the whole match)