Re: [問題] 長度固定的寫法..(perl/php皆可)
看板RegExp (正規表示式 Regular Expression)作者godspeedlee (妳,我可以)時間13年前 (2011/10/03 23:19)推噓1(1推 0噓 9→)留言10則, 2人參與討論串4/6 (看更多)
※ 引述《godspeedlee (妳,我可以)》之銘言:
※ 引述《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
你上一篇說資料是以空白作為分隔,那你可以把它當成 csv,然後每讀進
一行就套用下面這個 pattern:
(\s 指的是空白字元, \S 是非空白字元)
\G(?:^|\s+)(\S+)
個人覺得這樣還比較簡單些,不過這次您貼出來的資料範本有些空白又消失不見了?
還請您對您的資料變化規律多描述一些,大夥才幫得上忙
--
http://godspeedlee.myweb.hinet.net/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.124.96.249
推
10/03 07:48,
10/03 07:48
→
10/03 07:48,
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
推
10/04 07:46, , 1F
10/04 07:46, 1F
→
10/04 07:47, , 2F
10/04 07:47, 2F
→
10/04 07:48, , 3F
10/04 07:48, 3F
→
10/04 07:49, , 4F
10/04 07:49, 4F
→
10/04 07:50, , 5F
10/04 07:50, 5F
→
10/04 07:51, , 6F
10/04 07:51, 6F
→
10/04 13:52, , 7F
10/04 13:52, 7F
→
10/04 13:52, , 8F
10/04 13:52, 8F
→
10/04 13:53, , 9F
10/04 13:53, 9F
→
10/04 14:07, , 10F
10/04 14:07, 10F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 6 篇):
RegExp 近期熱門文章
PTT數位生活區 即時熱門文章