簡體   English   中英

什么正則表達式將匹配這些行?

[英]What regex will match these lines?

我不確定這是否是發布此內容的正確位置,對不起標題,但是我將PDF解析為CSV,由於格式不穩定,我決定對每行使用正則表達式。

我添加了,以表示匹配項應該在哪里。 如果將它們取出,則為原始字符串。 第一行是標准行,其他是缺少的列可以顯示的某些方式。 看看正則表達式是一個很好的提示

它需要匹配:

12,      16:00:30,  P,  14,     ______________  ABC12345678,          N,     
JOE B'obby,                    MY COMPANY-23 / NAME,                  23,  2


212,      14:00:30,,    212,     ______________  ABC12345678,          NCh,     
BOB Joe Joe,                    MY NAME,                  300,    12,      


2,      13:00:30,  P,  2,     ______________  ABC12345678,,          BOB 
Joe °,,, 20    


3,      15:15:00,  P,  132,     ______________  ABC12345678,,          PHO
Guy Guy °,,,,    

到目前為止,這就是我所擁有的。

    sl_re = r'(\d+)' \
        r'[ ]+(\d+:\d+:\d+)' \
        r'[ ]+([P]*)' \
        r'[ ]+(\d+)' \
        r'[ ]+([_ ]+[A-Z]+\d+)' \
        r'[ ]+([A-Za-z]{,3}|[ ])' \
        r'[ ]+([\w\']+[ ][\w\'°]+[ ]{,1}[\w\'°]*[ ]{,1}[\w\'°]*)'\
        r'[ ]*([\w\-/ ]*|[ ])' \
        r'[ ]*(\d*|[ ])' \
        r'[ ]*(\d*$)'     

直到最后三組完美為止,它都匹配,但是倒數第三組太貪心了,將全部匹配

感謝@tripleee的幫助,我找到了解決問題的方法。 正如他所建議的那樣,這個問題更加明確。

因為有很多可選的和不可預見的組組合需要*(0或更大),所以在可能的情況下確保它們不是貪心很重要。 僅當我希望他們匹配所有可能的內容(組之間的空格)時才使用貪婪搜索,而當我希望它們在下一次匹配時停止時才使用非貪婪搜索。 很基礎,但這是一個很好的學習機會!

僅最后幾行發生了變化,並通過測試用例添加了一些我發現的字符:

r'([\d\.]+)'
r'[ ]+(\d+:\d+:\d+)'
r'[ ]+([P]*)'
r'[ ]+(\d+)'
r'[ ]+([_ ]+[A-Z]+\d+)'
r'[ ]+([NWCSLh]{,3}|[ ])'
    r'[ ]+([\w\'\-]+[ ]*?[\w©\'\-°]+[ ]*?[\w\'\-°]*'
    r'[ ]*?[\w\'\-°]*[ ]*?[\w\'\-°]*)'
r'[ ]*([A-Z0-9,\'\-\/ \.]*?)'
r'[ ]*([\d\-]*?)'
r'[ ]*([\d\-]*$)'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM