regular expressions
請先讀完 regexp 講義 的 簡介 及 反白練習 兩篇, 並且約略瀏覽過 規則列表, 再回來看這篇。
讀檔、 拆解字串、 抓取陣列的一小段:
fs = require('fs') accessLog = fs.readFileSync('access_log', 'utf8') typeof accessLog typeof(accessLog) accessLog.length accessLog = accessLog.split('\n') typeof accessLog accessLog.length accessLog.slice(50,60)
javascript 的 regular expressions:
x = accessLog[50] x.match(/2005:\d\d/) x.match(/abcde/) x.match(/2005:\d\d/)[0] x.match(/2005:\d\d/) x.match(/2005:(\d\d)/) x.match(/2005:(\d\d)/)[1] /abcde/.exec(x) /2005:(\d\d)/.exec(x) /2005:(\d\d)/.exec(x)[1]
代換: replace 是一個 non-destructive 的函數。
x = 'this fish is his' x.replace(/is/g, '*') x
有的時候 regexp 的值來自變數而不是寫死的。 這時可以:
re = new RegExp(/is/,'g') x.replace(re,'---')
作業:
- 請解釋
accessLog.slice(50,60).map(function (x) { return x.match(/2005:(\d\d)/)[1]; })
- 請抓出 accessLog 裡面所有的 IP
- 請抓出 accessLog 裡面所有的 「年月日」 欄位
- 請抓出 accessLog 裡面所有的 「瀏覽器」 欄位
- 請抓出 accessLog 裡面所有的 「造訪網頁」 欄位
- 本頁最新版網址: https://frdm.cyut.edu.tw/~ckhung/b/js/regexp.php; 您所看到的版本: June 09 2016 14:27:38.
- 作者: 朝陽科技大學 資訊管理系 洪朝貴
- 寶貝你我的地球, 請 減少列印, 多用背面, 丟棄時做垃圾分類。
- 本文件以 Creative Commons Attribution-ShareAlike License 或以 Free Document License 方式公開授權大眾自由複製/修改/散佈。