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