Я - нуб-регулярник, пытающийся сопоставить содержимое или весь цитируемый сегмент текста без разбивки на экранированные кавычки.
Другими словами, мне нужно регулярное выражение, которое между двумя вопросами маркирует, будет соответствовать всем символам, которые не являются кавычками, а также любым кавычкам, которые имеют нечетное число последовательных обратных косых черт, предшествующих ему. Это должно быть нечетное количество обратных косых черт, поскольку пара обратных косых черт убегает в одну обратную косую черту sh.
Я успешно создал регулярное выражение, которое делает это, но оно полагалось на предварительную проверку и потому, что этот проект находится в C ++, и поскольку реализация стандартного C ++ для регулярных выражений не имеет функциональности поиска, я не смог использовать упомянутое регулярное выражение.
Вот регулярное выражение с поисковым запросом, которое я придумал: "(((?<!\\)(\\\\)*\\"|[^"])*)"
В следующем тексте должно быть 8 совпадений:
"Woah. Look. A tab."
"This \\\\\\\\\\\\\" is all one string"
"This \"\"\"\" is\" also\"\\ \' one\"\\\" string."
"These \\""are separate strings"
"The cat said,\"Yo.\""
"
\"Shouldn't it work on multiple lines?\" he asked rhetorically.
\"Of course it should.\"
"
"If you don't have exactly 8 matches, then you've failed."
Вот изображение моей (вероятно, наивной) альтернативной версии для визуальных людей из вас (вы знаете, кто вы): ![enter image description here](https://i.stack.imgur.com/Sk36z.png)
И вот ссылка на этот пример: https://regex101.com/r/uOxqWl/1
Если это невозможно сделать без предварительного просмотра, пожалуйста, дайте я знаю. Кроме того, если есть уважаемая библиотека регулярных выражений C ++, которая позволяет просматривать регулярные выражения, пожалуйста, дайте мне знать (это не обязательно должен быть ECMAScript, хотя я бы немного предпочел это).