次のようなコンテンツがあります。
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"" "*=" "*"\"".+"\","
これは最初の例をキャッチしますが、他の 2 つをキャッチしません。もう一方には複数の行があり、それが問題です。\n
次のように、複数の行を許可するためにどこかに変更することについて考えました:
^(" "|\t)+"title"" "*=" "*"\""(.|\n)+"\","
しかし、これは役に立ちません。代わりに、すべてをキャッチします。
私よりも、「私が欲しいのは二重引用符の間です。別のものが見つかるまですべてをキャッチするとどうなりますか?このようにして、行数に関係なく、タイトルの最後にいるかどうかを知ることができました"
。これ:,
^(" "|\t)+"title"" "*=" "*"\""[^"\""]+","
しかし、これには別の問題があります... 上記の例にはありませんが、タイトル宣言"
の間に二重引用符 ( ) を入れることができます。例えば:
title = "aaaaaaa \"X bbbbbb",
はい、常にバックスラッシュ ( \
) が前に付きます。
この正規表現を修正するための提案はありますか?