推 squalll:本來資料是有空白為分隔,後來發現沒有,資料是黏再一起的 10/03 07:48
→ squalll:但是長度是固定的,但是有的欄位資料是空白的 10/03 07:48
有的資料欄位是空白的?有一種情況是最簡單的,也有機會用 regex
處理掉,就是會消失的欄位是尾部,那就可以用下面這招
# free spacing mode, and remove all space from input line
^((.{5})(.{6})(.{7})(.{8})(.{9})|
(.{5})(.{6})(.{7})(.{8})|
(.{5})(.{6})(.{7})|
(.{5})(.{6})|
(.{5}))$
假如會消失的欄位是5,6,7,8,9中任一個且不定數量,那就非常難解了,
舉例來說只剩
6,7
或
5,8
兩者相加的長度都是13,那請問我是要用 (.{6})(.{7}) 還是
(.{5})(.{8}) 去比對才是對的?更何況求出所有排列組合的
regex pattern 應該長到嚇死人,還不如不用
不過假如每個欄位的資料具備某些特色(不光是長度),那就可能還有解,
不知道您方不方便公開部份的資料內容,讓大家幫您想一想解法?
(12345a345cd2187ankjdkj219zxnmzxn2109890 這看起來是隨手亂打的,
應該不是您真正的資料內容吧?)
--
http://godspeedlee.myweb.hinet.net/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.124.97.6
推 squalll:沒想到還可以用|來當OR使用,他中間如果沒資料也回存空白 10/04 07:46
→ squalll:但是最後一筆如果沒資料,他就直接結束了,導致我的regex錯 10/04 07:47
→ squalll:誤,利用|應該就可以解決了(因為我現在是用if else判斷長度 10/04 07:48
→ squalll:來決定要用哪一個regex...真是有點蠢XD 謝謝讓我多學一招 10/04 07:49
→ squalll:因為原始資料太長..Orz 不然我很願意貼上來看是不是有更好 10/04 07:50
→ squalll:的寫法...:p 10/04 07:51
→ godspeedlee:嗯,我大概懂你的意思了,那些「消失的欄位」,假如是夾 10/04 13:52
→ godspeedlee:在{5}...{9}之間,並且「空白字元的長度」與沒有空白 10/04 13:52
→ godspeedlee:時一樣,那我給你的解法就是答案了(不知道有無猜錯?) 10/04 13:53
→ godspeedlee:假如是如此,那移除尾部的空白字元就好了 10/04 14:07