現在我正在研究python腳本來解析由kindles生成的My Clippings文件,當有人突出顯示,記錄筆記或書籤時。我正在使用正則表達式從文件中收集數據,然後我打算將它存儲在sqlite數據庫中。但現在,我無法匹配包含書名和可能作者的行。使用正則表達式在parentesis中捕獲文本(如果它們存在)
這條線有三種可能性。他們可以採用以下格式:
Title (Last, First)
Title (Author)
Title
我要的是對正則表達式捕捉標題,並且無論是在結束括號,如果它存在,否則捕獲一個空字符串。因此,例如,我想在這裏正則表達式來給我的結果:
('Title', 'Last, First')
('Title', 'Author')
('Title', '')
現在我能夠做到的捕獲括號正則表達式,但不是冠軍而不作者。以下是我現在有:
(.+) (?:\((.+)\)(?:\n|\Z))*
唯一的問題是,它要求符合作者結束,如果我給它一個選項,以接受空字符串,它發現整條生產線是沒有作者的標題。即
('Title (Last, First)', '')
('Title (Author)', '')
('Title', '')
我不認爲你需要開始\ w +?在這種情況下不貪婪。它只是增加了不必要的回溯。除此之外,我喜歡這個答案的靈活性。 –
嗯,答案中的正則表達式與演示中的正則表達式不同。 (\ w +?)(?:\ s?\(([\ w,\ s] *)\))?$ –
啊,是的,oops - 我只是把「+」改成了「*」說明空括號。 修正了它。 –