Re: [問題] 長度固定的寫法..(perl/php皆可)
看板RegExp (正規表示式 Regular Expression)作者cutecpu (可愛中央處理器)時間13年前 (2011/10/04 10:55)推噓5(5推 0噓 2→)留言7則, 1人參與討論串5/6 (看更多)
#!/usr/bin/perl
while(<DATA>){
# 用 "\t" 補齊結尾後面不足長度的部份
s/^$/"\t" x 39/e;
s/^(.{5})$/$1 . "\t" x 34/e;
s/^(.{11})$/$1 . "\t" x 28/e;
s/^(.{25})$/$1 . "\t" x 14/e;
s/^(.{32})$/$1 . "\t" x 7/e;
# 用 "\t" 代替中間有欄位是空值的部份
s/^ {5}/"\t" x 5/e;
s/^(.{5}) {6}/$1 . "\t" x 6/e;
s/^(.{11}) {14}/$1. "\t" x 14/e;
s/^(.{25}) {7}/$1. "\t" x 7/e;
# 欄位中間加上逗號
s/^(.{5})(.{6})(.{14})(.{7})(.{7})$/$1,$2,$3,$4,$5/;
# 去掉 "\t"
s/\t//g;
# 印出結果
print;
}
__DATA__
123 j12345mc1235987ccccc aaaaxxxxxxx
12345a345cd2187ankjdkj219zxnmzxn2109890
12345a345cd2187ankjdkj219zxnmzxn
12345a345cd2187ankjdkj219
12345a345cd
12345
a345cd 2109890
2187ankjdkj219zxnmzxn
zxnmzxn
※ 引述《squalll (追求夢想~)》之銘言:
: 沒想到還會回來回這一篇....
: 最近才發現這樣寫有些資料有問題
: 因為資料欄位中不一定會有資料,
: 最後一個欄位如果是空白的話這樣輸出就會錯誤
: 12345a345cd2187ankjdkj219zxnmzxn2109890
: 123 j12345mc1235987ccccc aaaaxxxxxxx
: 12344123222 123ascv
: 這樣到第三筆輸出的時候會變得很奇怪
: 預期應該會變成
: 12345,a345cd,2187ankjdkj219,zxnmzxn,2109890
: 123 ,j12345,mc1235987ccccc, aaaa,xxxxxxx
: 12344,123222,,123ascv,
: 但是實際上第三筆資料會變成
: 12344123222,123ascv之類的..
: 我的REGEXP目前是這樣寫
: foreach $thing (@list){
: $thing =~ s/(.{5})(.{6})(.{7})(.{8})(.{9})/$1,$2,$3,$4,$5/;
: ....
: }
: 主要應該是因為s/match一串非空白字元,並以找到的字串為結尾
: 所以當我最後一欄資料為空白的時候就會發生錯誤了
: 不知道有沒有人遇過類似的問題? 該如何解決呢
: 我的資料是連續的..該怎麼寫才可以取出度定長度的值(包含空白)
: 謝謝m(_ _)m
: ※ 引述《squalll (放逐?)》之銘言:
: : 有一堆連續的資料
: : 12345 a345cd 2187ankjdkj219 zxnmzxn 2109890
: : 123 j12345 mc1235987ccccc aaaa xxxxxxx
: : 中間有空白分隔,不過因為長度都固定,想問取固定長度的regular怎麼寫呢
: : 希望能轉換成這樣,第一欄就固定取長度五個,第二欄六個,第三欄14個..之類的!
: : 輸出結果:
: : 12345,a345cd,2187ankjdkj219,zxnmzxn,2109890
: : 123 ,j12345,mc1235987ccccc, aaaa,xxxxxxx
: : 謝謝大家 :)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.59.164.109
推
10/04 14:19, , 1F
10/04 14:19, 1F
推
10/04 14:25, , 2F
10/04 14:25, 2F
推
10/05 00:40, , 3F
10/05 00:40, 3F
→
10/05 00:40, , 4F
10/05 00:40, 4F
推
10/05 00:45, , 5F
10/05 00:45, 5F
→
10/05 00:46, , 6F
10/05 00:46, 6F
推
10/05 00:53, , 7F
10/05 00:53, 7F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 6 篇):
RegExp 近期熱門文章
PTT數位生活區 即時熱門文章