跳到主要內容

Koha 特別說明: 正則表達式

說明

此處之正則表達式說明, 是以以下軟體做為工具使用:

正則表達式

百家姓插空格

Before: 趙錢孫李周吳鄭王馮陳褚衛蔣沈韓楊朱秦尤許何呂施張孔曹嚴華金魏陶姜魯韋昌馬苗鳳花方俞任袁柳酆鮑史唐費廉岑薛雷賀倪湯滕殷羅畢郝鄔安常樂于時傅皮卞齊康伍余元卜顧孟平黃和穆蕭尹姚邵湛汪

After: 趙 錢 孫 李 周 吳 鄭 王 馮 陳 褚 衛 蔣 沈 韓 楊 朱 秦 尤 許 何 呂 施 張 孔 曹 嚴 華 金 魏 陶 姜 魯 韋 昌 馬 苗 鳳 花 方 俞 任 袁 柳 酆 鮑 史 唐 費 廉 岑 薛 雷 賀 倪 湯 滕 殷 羅 畢 郝 鄔 安 常 樂 于 時 傅 皮 卞 齊 康 伍 余 元 卜 顧 孟 平 黃 和 穆 蕭 尹 姚 邵 湛 汪

Find: (.)

Replace: $1 <-右方為一空格

說明: 要這麼用時一時想不出來, 想說網路找找, 也沒人寫, 後來想想, 可能是太簡單到沒人寫..但至少我有這需要, 如果您也需要參考, 就幫到人了....

 

同樣做資料整理, 但整理出來是一欄怎辦?

把整欄複製到reqex101

Find: .\n

Replace: $1 <-右方為一空格

 

如果那一段的資料(分欄)是啥時, 那一段的資料要做替代, 這裡用一個外國的範例來介紹如下

If: (=856.*\$3HeinOnline Law Journal Library) <-856段分欄3的值是「HeinOnline Law Journal Library」時, 你得確認分欄3的值就這麼多哦...然後這邊用的是「REGEX」<--在旁邊記得勾起來

Find: =516  \\$aElectronic monograph <-這個就不是正則表達式而是一般的尋找及替代了, 所以下面的Search Option選「Match case」, 而不是「Use regular expressions」....<<--這個我們也首次學到可以這樣用, Happy...

Replace: =516 \\$aElectronic journal

 

使用尋找與取代的正則表達式

OpenOffice Calc 預設支援正則表達式(軟體翻譯為常規表達式),我們可以直接在試算表的公式欄裡使用正則表達式來找出有問題的資料格式。

  1. 設定方式: 工具 -> 選項 -> OpenOffice Calc -> 允許公式含有常規表達式 (預設啟用)
  2. 在Calc 可透過「尋找與取代」功能來使用正則表達式,但要記得把「更多選項」打開,把下方的「□ 常規表示式」打勾即可用來搜尋有問題的資料…

針對ISO 4-2-2 格式日期的除錯方式

  1. 在搜尋內容欄位填入, (([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)  , 按下「尋找全部」找出符合格式的資料。
  2. 看到沒有著色的日期儲存格, 就是不符合ISO格式(主要是YYYY-MM-DD)的日期資料
  3. 您可能會問 4-2-2 格式需要寫那麼一大串語法嗎?主要是要符合 A. YYYY-MM-DD B.西元後(此語法不支持西元前) C.大小月 D.潤年2/29 四個條件, 其它格式我們不建議Koha使用單位使用, 所以沒有把檢驗條件放進來, 如您不打算用上述格式, 請自行修改語法即可使用....

檢查句尾空白

儲存格句尾空白因為看不到,也常造成格式上的困擾,可在搜尋填入 「\s*$」<-不包括括號, 來檢查,反白的是有句尾空白。

 

碩陽數位科技有限公司 TEL:(02) 8226-5657 (02) 8228-0288 FAX:(02) 8226-5022