我開始喜歡這個項目在電子表格:作用ColdFusion的正則表達式-ING邏輯奇怪
注意不同大小的破折號 ..較長的一個許可證日期之後。 Chr(8211)如果我是正確的。
我打開電子表格轉換爲查詢:
我得到一個單元格的值和正則表達式是第一位出來。 (正則表達式模式似乎有點多,但它的工作原理)
//i make a new query and set one cell
querysetcell(newquery,"permitDateHeader",rereplace(cellWithPermitDate,
"^[(\W)]*(\w)*(\s)*(\w)*(\s)*(\w)*(:| -| –)+","","all"), insertRow);
不過,我還是離開了我這一點:
通知正則表達式的建築類型的工作只有兩個小破折號。
所以我創建了一個測試頁面.CFM(這個其他的東西是在一個控制器上運行)
number = "Permit Number: 2016-1";
date = "- Permit Date – January 13, 2016";
reformednumber = rereplace(number,"^[(\W)]*(\w)*(\s)*(\w)*(\s)*(\w)*(:| -| –)+","","all");
reformeddate = rereplace(date,"^[(\W)]*(\w)*(\s)*(\w)*(\s)*(\w)*(:| -| –)+","","all");
writeDump(reformednumber);
writeDump(reformeddate);
而這就是轉儲:
許可證日期已成功解析。這一次在.cfm頁面而不是在控制器中,並將其放入查詢中。這是我看到的唯一區別。同樣的正則表達式。
這是怎麼發生的?
可能的解決方案只是改變正則表達式。我只是不想提取屬於\ W範圍的值,例如美元符號。
注如果無法重新創建那麼它可能是太「專用」的錯誤可留在了論壇。
由於您只想放棄模式的第一次出現,您可能想要移除'rereplace'中的''all''參數。 – Alex
如果你認爲這個長連字符是char(8211),爲什麼你在正則表達式中不考慮這個?順便說一下,ColdFusion asc()函數會告訴你這個字符實際是什麼。 –
@DanBracuk 你是對的,但我嘗試過,並留下@%〜或一些奇怪的字符來代替輸出中的短劃線。沒有玩那麼多。 –