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

时间:2019-07-09 15:20:16

标签: python regex pcre

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

假设我有以下文字:

Lorem Ipsum
"""
sdsdfgsdf
"""
bar

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

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

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

有什么想法可以使此正则表达式正常工作吗?

1 个答案:

答案 0 :(得分:3)

如果右侧不是(?!""").*,则无固定模式"""将匹配任何char 0+次。由于未锚定,因此它将在"中的第一个"""之后匹配,因为在该位置断言将成功。

如果在字符串中不能使用这三个双引号,则必须使用锚点^来声明字符串的开头,并将.*添加到否定的反行中。

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

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

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

the score is not necessary consistent beetween search request