匹配除三个连续双引号之外的所有内容
match everything except three consecutive double quotes
我正在寻找一个正则表达式来解析 除了三个连续的双引号 之外的所有内容。问题是,当我使用正常的否定前瞻时,连续的双引号会被吞噬,并且它与我想要的不匹配。
假设我有以下文本:
Lorem Ipsum
"""
sdsdfgsdf
"""
bar
并希望linewise-regex匹配第一行、第三行和第五行,但不匹配"""
。
我试过以下正则表达式:/(?!""").*/
,但那是双引号被吞噬的时候。
尝试使用 ["]
一次匹配一个双引号也失败了:/(?!["]["]["]).*/
我正在使用 Python 来匹配正则表达式。
有什么想法可以让这个正则表达式起作用吗?
如果右边不是 """
,则未锚定模式 (?!""").*
将匹配任何字符 0+ 次。因为它没有锚定,所以它将在 """
中的第一个 "
之后匹配,因为在那个位置断言会成功。
如果这 3 个双引号不能出现在字符串中,您必须使用锚点 ^
断言字符串的开头并将 .*
添加到否定前瞻:
^(?!.*""").*$
或者如果字符串中仅有 3 个连续的引号,则只使用它们。
^(?!"""$).*$
我正在寻找一个正则表达式来解析 除了三个连续的双引号 之外的所有内容。问题是,当我使用正常的否定前瞻时,连续的双引号会被吞噬,并且它与我想要的不匹配。
假设我有以下文本:
Lorem Ipsum
"""
sdsdfgsdf
"""
bar
并希望linewise-regex匹配第一行、第三行和第五行,但不匹配"""
。
我试过以下正则表达式:/(?!""").*/
,但那是双引号被吞噬的时候。
尝试使用 ["]
一次匹配一个双引号也失败了:/(?!["]["]["]).*/
我正在使用 Python 来匹配正则表达式。
有什么想法可以让这个正则表达式起作用吗?
如果右边不是 """
,则未锚定模式 (?!""").*
将匹配任何字符 0+ 次。因为它没有锚定,所以它将在 """
中的第一个 "
之后匹配,因为在那个位置断言会成功。
如果这 3 个双引号不能出现在字符串中,您必须使用锚点 ^
断言字符串的开头并将 .*
添加到否定前瞻:
^(?!.*""").*$
或者如果字符串中仅有 3 个连续的引号,则只使用它们。
^(?!"""$).*$