[英]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.