iT邦幫忙

0

在UltraEdit用正規表達式取代後,出現奇怪的問號?

假設我本來有一個這樣的文件:

國語
80
數學
90
社會
90
自然
85

然後我想把它變成分數和科目在同一行,所以在UltraEdit中,利用取代的功能,用下面的正規表達式:

尋找內容:([^\d]*)\n
取代成為:\1:

結果文件會變成:

國語?:80
數學?:90
社會?:90
自然?:85

請問一下,那個多出來的「?」是什麼,他不是真的問號,因為用問號去取代,取代不掉,我猜可能是一些不可視的字元,但不曉得是什麼,又該怎麼解決這個情況?

看更多先前的討論...收起先前的討論...
davistai iT邦大師 1 級 ‧ 2008-06-27 17:04:10 檢舉
Wordsmith大,
為什麼我測起來是搜尋的字串找不到 ?
那兒弄錯了?

Windows XP SP2 + UE-32 v13.10
wordsmith iT邦高手 1 級 ‧ 2008-06-27 19:17:50 檢舉
我的版本沒那麼新,是v10版的,不過我想應該和版本無關,最有可能是出在正規表達式的語法上。

在「組態」的「搜尋」中,將unix的常規表達式勾選起來。

因為UltraEdit有兩套常規表達式,一套是unix的,一套是它自己的。我用的是unix形式的,而它預設是UltraEdit形式的。也許問題出在這。

fillano iT邦超人 1 級 ‧ 2008-06-28 04:39:51 檢舉
v14改成在搜尋/取代操作時可以選PERL/UNIX/UltraEdit三種風格的常規表示式,不放在設定裡面了。之前的版本都需要在設定的時候選擇用哪種風格的。
wordsmith iT邦高手 1 級 ‧ 2008-06-29 10:34:08 檢舉
謝謝scottchen和antijava大的幫忙呀,終於解決我的困擾。

想說斷行就是 \n,沒想到只知其一,不知其二,還有一個 \r 躲在那裡。

去google了一下,好像這樣的設計,是承襲自打字機的動作,打字打到行尾之後,打印的裝置先回到最左邊,也就是所謂的回車(return),然後再往下移,準備打新一行(n for next line?)。

知道這樣的背景之後,對\r\n的出現就覺得能接受了。
沒錯,一開始時就是模擬打字機的行為設計

此外還有另一個許多人沒注意的差別
就是 Return 和 Enter
在PC的鍵盤和使用上似乎都是一樣
但在較大型主機(IBM,AS/400..)使用時
Return只是「換下一個欄位」
Enter才是「確認整個畫面的資料輸入完成」的用途
而且通常會用Ctrl鍵來表示Enter功用
還有補充一點

您是我第一個看到在UltraEdit裡使用RE的人
佩服佩服...^^
wordsmith iT邦高手 1 級 ‧ 2008-07-04 10:06:04 檢舉
因為學會一點正規表達示,覺得很好用,然後UltraEdit又有支援...沒什麼好佩服的啦,只是菜鳥一枚,才會問這種粗淺的問題。

也謝謝 antijava的回答和補充。

2 個回答

22
灌籃高手
iT邦高手 1 級 ‧ 2008-06-27 10:47:34
最佳解答

試試看
尋找內容:([^\d]*)\r\n
取代成為:\1:

那個?有可能是\r (回車)

看更多先前的回應...收起先前的回應...

(回車)是[Return]嗎?

horrorlin iT邦研究生 2 級 ‧ 2008-06-27 11:34:54 檢舉

應該是,我知道中國把Retun翻成回車,台灣翻譯成換行..
搞錯的話請跟我說 :)

horrorlin iT邦研究生 2 級 ‧ 2008-06-27 11:36:01 檢舉

少打一個r..應該是return..SRY...

好個回車...

fillano iT邦超人 1 級 ‧ 2008-06-27 11:45:38 檢舉

用binary mode去看,hex是0D,所以是\r沒錯。

14
海綿寶寶
iT邦大神 1 級 ‧ 2008-06-27 11:43:34

在 UltraEdit 中按 Ctrl+H 就可以看到十六進位碼

若如樓上所述
你看到的 ? 應該是 0D (Carriage Return) 或者 0A (Line Feed)

題外話
CR = 回車
那中國怎麼稱呼 LF 呢?

horrorlin iT邦研究生 2 級 ‧ 2008-06-27 12:08:26 檢舉

題外回應:
剛剛榖歌一下,查到有「走行」「換行」「移行」等翻譯,供大大參考~

嗯...謝謝(我應該自己去G的, 歹勢歹勢)

看起來還是「回車」比較傳神(打字機從最右邊推回最左邊的情形)
走行、換行、移行似乎都有點不妥
因為「行」和「列」容易讓人混淆

我要發表回答

立即登入回答