Предположим, у меня есть строкаРазбиваем строку с регулярным выражением, игнорируя разделители, которые происходят в фигурные скобки
Max and Bob and Merry and {Jack and Co.} and Lisa
.
мне нужно разделить его с and
быть разделителем, , но только если это не происходит в фигурных скобках.
Так из приведенных выше строк, я должен получить 5 строк:
Max
, Bob
, Merry
, Jack and Co.
, Lisa
.
Я пытался что-то вроде этого шаблона:
[^\\\{.+]\\band\\b[^.+\\\}]
Но это не работает - Jack
и Co.
все еще разделены, а также (я использую C++, так что я должен бежать специальные символы дважды).
Есть ли образы, поддерживаемые qregexp? Если да, попробуйте ['\\ band \\ b (?! [^ {] *})'] (Https://regex101.com/r/0Fd1tF/1), возможно, потребуется больше экранов. –
В C++ вы можете использовать * raw string literal * для регулярных выражений, заключенных в 'R" ('и') ". Таким образом, обратная косая черта может использоваться напрямую, т. Е. 'R" (\ d *) "' – Meyer
Вы хотите разбить со слишком многими условиями, что похоже на совпадение с двумя шагами, может оказаться лучше: 1) извлечь то, что находится внутри фигурных скобок с помощью 'QRegExp (" \\ {([^ {}] *) \\} ")' и 2) расщепляется на '' \\ {[^ {}] * \\} | \\ s * \\ band \\ b \\ s * "' –