現在、誰かが強調表示したり、メモを取ったり、ブックマークしたりしたときに、kindles によって生成された My Clippings ファイルを解析するための Python スクリプトに取り組んでいます。ファイルからデータを収集するために正規表現を使用しています。次に、それを sqlite データベースに保存する予定です。ただし、現在、本のタイトルとおそらく著者を含む行を一致させるのに問題があります。
この行には 3 つの可能性があります。次の形式にすることができます。
Title (Last, First)
Title (Author)
Title
私が望むのは、正規表現がタイトルをキャプチャし、存在する場合は末尾の括弧内にあるものをキャプチャし、そうでない場合は空白の文字列をキャプチャすることです。たとえば、ここの正規表現で結果が得られるようにします。
('Title', 'Last, First')
('Title', 'Author')
('Title', '')
現在、括弧をキャプチャする正規表現を実行できましたが、著者のないタイトルはできませんでした。これが私が今持っているものです:
(.+) (?:\((.+)\)(?:\n|\Z))*
唯一の問題は、行が著者で終わる必要があることです。空白文字列を受け入れるオプションを指定すると、行全体が著者のないタイトルであることがわかります。すなわち
('Title (Last, First)', '')
('Title (Author)', '')
('Title', '')