匹配除三个连续双引号之外的所有内容

match everything except three consecutive double quotes

我正在寻找一个正则表达式来解析 除了三个连续的双引号 之外的所有内容。问题是,当我使用正常的否定前瞻时,连续的双引号会被吞噬,并且它与我想要的不匹配。

假设我有以下文本:

Lorem Ipsum
"""
sdsdfgsdf
"""
bar

并希望linewise-regex匹配第一行、第三行和第五行,但不匹配"""

我试过以下正则表达式:/(?!""").*/,但那是双引号被吞噬的时候。 尝试使用 ["] 一次匹配一个双引号也失败了:/(?!["]["]["]).*/

我正在使用 Python 来匹配正则表达式。

有什么想法可以让这个正则表达式起作用吗?

如果右边不是 """,则未锚定模式 (?!""").* 将匹配任何字符 0+ 次。因为它没有锚定,所以它将在 """ 中的第一个 " 之后匹配,因为在那个位置断言会成功。

如果这 3 个双引号不能出现在字符串中,您必须使用锚点 ^ 断言字符串的开头并将 .* 添加到否定前瞻:

^(?!.*""").*$

或者如果字符串中仅有 3 个连续的引号,则只使用它们。

^(?!"""$).*$

Regex demo