У меня есть такой контент:
author = "Marjan Mernik and Viljem Zumer",
title = "Implementation of multiple attribute grammar inheritance in the tool LISA",
year = 1999
author = "Manfred Broy and Martin Wirsing",
title = "Generalized
Heterogeneous Algebras and
Partial Interpretations",
year = 1983
author = "Ikuo Nakata and Masataka Sassa",
title = "L-Attributed LL(1)-Grammars are
LR-Attributed",
journal = "Information Processing Letters"
И мне нужно поймать все между двойными кавычками для title . Моя первая попытка была такой:
^(" "|\t)+"title"" "*=" "*"\"".+"\","
Который ловит первый пример, но не два других. Другие имеют несколько строк, и это проблема. Я думал об изменении на что-то с \n
где-нибудь, чтобы разрешить несколько строк, например:
^(" "|\t)+"title"" "*=" "*"\""(.|\n)+"\","
Но это не помогает, вместо этого он ловит все .
Чем я все-таки "хочу получить между двойными кавычками, что если я поймаю все, пока не найду другой "
, за которым следует ,
? Таким образом, я мог бы знать, был ли я в конце название или нет, независимо от количества строк, например:
^(" "|\t)+"title"" "*=" "*"\""[^"\""]+","
Но здесь есть другая проблема ... В приведенном выше примере ее нет, но символ двойной кавычки ("
) может находиться между объявлением title . Например:
title = "aaaaaaa \"X bbbbbb",
И да, ему всегда будет предшествовать обратный слеш (\
).
Есть предложения по исправлению этого регулярного выражения?