сопоставлять все, кроме трех последовательных двойных кавычек - PullRequest
1 голос
/ 09 июля 2019

Я ищу регулярное выражение для анализа всего, кроме трех последовательных двойных кавычек .Проблема в том, что когда я использую нормальный негативный взгляд, двойные кавычки сжигаются подряд, и там это не совсем соответствует тому, что я хочу.

Предположим, у меня есть следующий текст:

Lorem Ipsum
"""
sdsdfgsdf
"""
bar

И хотите linewise-regex , чтобы соответствовать первой, третьей и пятой строкам, но не """.

Я пробовал следующее регулярное выражение: /(?!""").*/, новот когда двойные кавычки сожрались.Попытка сопоставить одну двойную кавычку за раз с помощью ["] тоже не удалась: /(?!["]["]["]).*/

Я использую Python для сопоставления с регулярным выражением.

Любые идеи, как я могу заставить это регулярное выражение работать

1 Ответ

3 голосов
/ 09 июля 2019

Незаполненный шаблон (?!""").* будет соответствовать любому символу 0+ раз, если то, что справа, не равно """.Так как он не привязан, он будет соответствовать после первого " в """, потому что в этой позиции утверждение выполнится успешно.

Вы должны использовать якорь ^, чтобы подтвердить начало строки и добавить .* к отрицательному прогнозу, если эти 3 двойных кавычки не могут появиться в строке:

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

Или используйте только 3 последовательных кавычки, если это единственные символы в строке.

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

Regex demo

...