- 帖子
- 605
- 主題
- 92
- 精華
- 0
- 積分
- 648
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- 7
- 閱讀權限
- 50
- 性別
- 男
- 來自
- macau
- 註冊時間
- 2013-4-5
- 最後登錄
- 2019-2-10
 
|
2#
發表於 2013-8-22 10:08
| 只看該作者
本帖最後由 sunnyso 於 2013-8-22 10:11 編輯
4.
如何在一大片文字, 銀行帳號, 信用卡號... 當中, 找出看來像是行動電話號碼的字串, 例如 0912345678 或是 0912-345678 或是 0912-345-678 之類的? 09\d\d-?\d\d\d-?\d\d\d 這裡的 \d 是 [0-9] 的簡寫, 這又是 [0123456789] 的簡寫, 意思是 「任何一個數字字元」
5.
想要找一組數字 ip (例如 168.95.1.1 或 163.17.57 之類的) 印象中在某個檔案內曾看過, 但既不記得精確的數字, 也不記得在那個檔案看過, 該怎麼辦? 可以搜尋 \d+\.\d+\.\d+\.\d+ 抓出所有數字 ip。 這裡的 + 表示 「前面的東西, 可以重複出現 1 次, 2 次, 3 次, ... 任意次」。 因為 . 在 regexp 當中有特殊的意義: 「任何一個字元」; 但在這裡我們就是要找 "." 於是在前面加上 \ 以取消它的特殊意義。
6.
可以把一個文字檔裡面的所有空白列都刪掉嗎? 這個 regexp 可以抓出所有空白列: ^\s*$。 在 regexp 最前面放一個 ^ 表示您只對 「出現在一列之首」 的樣版有興趣; 在 regexp 的最後面放一個 $ 表示您只對 「出現在一列之尾」 的樣版有興趣。 \s 是 [ \t\n] 的簡寫, 意思是 「任何一個空白字元」 (包含空格, tab, 等等)。 * 表示 「前面的東西, 可以重複出現 0 次, 1 次, 2 次, ... 任意次」。 這個樣版翻譯成中文, 就是 「從頭到尾都是一片空白的那種列」。
這裏大約使用了十個 regexp 特殊符號。 Regexp 總共大約有三四十個符號; 不過其中大約有一半較少用; 只要熟用兩打, 就已經可以變很多魔術了。 Regexp 是一種低成本, 高報酬的學習投資。 耐心把這份講義看一半, 絕對比花時間學花俏的圖形介面軟體更值回票價。 |
|