Search this site
Embedded Files
Skip to main content
Skip to navigation
祝平次的教學網站
歡迎瀏覽
生成式AI實做
報告批改標準
一般學術論文
學期報告
關於AI改進寫作的事
直接讓AI評AI改過寫作的報告
有效率使用Gemini
「歡迎瀏覽」20210214的複本
古典與常
01 課程總表
細細念的中國思想史
20250902 頭一擺:啥物是中國思想史
中國思想史
參考書單
單元內容
第一講 什麼是中國思想史?
第二講 商周政治文化﹕由帝到天
第三講左傳中的周禮世界
孔子
墨子
老子
莊子
名家
孟子
荀子
法家
陰陽家與黃老
大學與中庸
淮南子
董仲舒
揚雄與王充
下學期課程介紹
魏晉玄學
王弼傳
佛的一生
佛教原始教義
六朝佛學
大乘空宗
大乘有宗
天台宗
華嚴宗
禪宗
韓愈
李翱
邵雍
周敦頤
張載
程顥
程頤
朱熹
陸九淵
王守仁
戴震
相關連結
課程檔案
閱讀《文獻選編》注意事項
課表
中思史 2024春
中思史 2023秋
中思史 2023春
中思史 2022秋
中思史 2022春
中思史 2021秋
中思史 2021春
中思史 2020秋
中思史2019春
中思史 2018秋
中思史 2017春
中思史 2016秋
中思史 2016春
講稿
0101課程介紹
02商周的政治文化
02-02周代的禮樂
02-03左傳中的禮
03孔丘
04墨翟
法家
程顥
講稿:荀子
魏晉玄學
張載
理學中的性
0201 課程介紹
「中國思想史」:其它相關資訊
借屍還魂的文化政治論述
「學術與政治之間」2023
宋代理學專題
20190219
20190226
20190305
20190312
20190319
20190326
20190402
20190409
20190416
20190423
20190430
20190507
20190514
20190521
20190528
20190604
20190611
Neo-Confucian Philosophy
Lecture 01 Why Talking about Neo-Confucianism Now?
Lecture 02 The Confucianism before Neo-Confucianism
Lecture 03 What Is Neo-Confucianism?
Lecture 04 Cosmology and Ethics I: Shao Yong (邵雍 1012-1077) and Zhou Dunyi (周敦頤 1017-1073)
Lecture 05 Cosmology and Ethics II: Zhang Zai (張載, 1020-1077)
Lecture 06 Human Nature and Ethics: Cheng Hao (程顥 1032-1085) and Cheng Yi (程頤 1033-1107)
Lecture 07 Principle, Material Force and Ethics: Zhu Xi (朱熹 1130-1200)
Lecture 08 Lu Jiuyuan (陸九淵 1139-1193) and the Statecraft Thinkers
Lecture 09 The Yuan (元 1279-1368) Neo-Confucianism and Wang Yangming (王陽明 1472-1529)
Lecture 10 The End of of Neo-Confucianism and The Beginning of the Intellectualism of the Evidential Research
Lecture 11 The Future of Confucianism in East Asia
儒學與西洋倫理學專題
倫理學:2022春
倫理學:2015春
倫理學:2013春
倫理學:2010春
倫理學:2008春
SEP裏的相關詞彙
儒家倫理學文獻選
倫理學:荀子
倫理學:論語
論理學:孟子
倫理學:2026春
南宋儒學專題
周易
01今本《周易》的組成
02八卦基本取象
03六十四卦
周易:2014春
周易:2018秋
周易:2021秋
周易:2024秋
兩儀四象八卦六十四卦
子學名著選讀
Regular Expression (正[則規]表[達示]式)
子學2017秋
子學2015秋
子學2014秋
子學2024秋
宋明理學
數位人文專題
CText TextTools
N-gram
Web App 介面圖
註冊與登入
數位工具與文史研究
01 課程介紹
02 數位文本的製造
03 MSWord
04 數位檔案櫃
05 Excel
06 Knowledge for All
07 小工具大作用
08 文本標記與文本分析
09 CBDB
10 初階GIS
11 初級社會網絡分析
12 期末檢定
13 Excel2Earth介紹
本體結構與文史研究專題
01第一堂課
毛詩注疏卷二
02第二堂課
03第三堂課
04第四堂課
05第五堂課
06第六堂課
07第七堂課
群組
朱熹研究專題
漢學英文
荀子
荀子:2020
荀子:2023
2014
2018
資料庫與文史研究
韓非子
課程:語料分析與文史研究
語料分析與文史研究專題
語料分析與理學研究
中思史:2023秋
宋代類書專題
資料庫與文史研究
朱熹書信選讀
AI處理宋代理學欠缺的地方
什麼是生成式AI
02 課程公告
20111215 本網站設立
「朱熹研究專題」移到下學期
重啟Google教學平台
03 相關檔案
分組報告注意事項
口頭報告三句訣
學期書面報告一般問題
學生學期書面報告自評表
數位工具與文史研究選課意願調查
筆記作業
04 指導學生
05 Gloassary 詞彙表
li / 理
06 原始文獻
01先秦文獻
公孫龍子
名實論
堅白論
指物論
白馬論
通變論
呂氏春秋
仲春紀.情欲
仲春紀.當染
孟春紀.正月紀
孟春紀.貴公
商君書
去彊第四
定分第二十六
農戰第三
墨子
兼愛上第十四
大取
天志上第二十六
小取
經上、經下、經說上、經說下
非命上第三十五
非攻下第十九
孟子
公孫丑.上.二
告子.上
孫子兵法
始計第一
用間篇第十三
軍形篇第四
管子
形勢第二
權修第三
牧民第一
老子
荀子
01勸學篇
勇
天論篇第十七
性惡篇
教
正名篇
漸、積
群論
解蔽篇
非十二子篇第六
莊子
天下第三十三
逍遙遊
養生主
齊物論
論語
論語.八佾第三
韓非子
三守第十六
主道第五
二柄第七
五蠹第四十九
亡徵第十五
人主第五十二
備內第十七
內儲說上第三十
內儲說下第三十一
八姦第九
八經第四十八
八說第四十七
六反第四十六
初見秦第一
制分第五十五
功名第二十八
十過第十
南面第十八
和氏第十三
問田第四十二
問辯第四十一
喻老第二十一
外儲說右上第三十四
外儲說右下第三十五
外儲說左上第三十二
外儲說左下第三十三
大體第二十九
姦劫弒臣第十四
存韓第二
孤憤第十一
守道第二十六
安危第二十五
定法第四十三
心度第五十四
忠孝第五十一
愛臣第四
揚權第八
有度第六
用人第二十七
觀行第二十四
解老第二十
詭使第四十五
說林上第二十二
說林下第二十三
說疑第四十四
說難第十二
難一第三十六
難三第三十八
難二第三十七
難勢第四十
難四第三十九
難言第三
顯學第五十
飭令第五十三
飾邪第十九
02秦唐文獻
《莊子注》
史記
卷六十三 老子韓非列傳
司馬談〈論六家要旨〉
漢書
漢書藝文志(節錄一)
漢書藝文志(節錄二)
漢書
03宋元文獻
太極圖說
定性書
明道先生墓表
明道先生行狀
東銘
正蒙( 選錄)
正蒙.乾稱篇
正蒙.太和篇
正蒙.誠明篇
濂溪先生墓碣銘
皇極經世(51)
皇極經世(52)
皇極經世(53)
皇極經世(54)
皇極經世(55)
皇極經世(56)
皇極經世(57)
皇極經世(58)
皇極經世(59)
皇極經世(60)
皇極經世(61)
皇極經世(62)
西銘
識仁篇
通書
道學傳序
顏子所好何學論
04明清文獻
四庫全書總目.子部總敘
四庫全書總目.經部總敘
07 參考書單
08 相關連結
introduction
課程日曆
跟我連絡
祝平次的教學網站
Regular Expression (正[則規]表[達示]式)
以下由
維基的表格
改寫,請大家利用寄給大家的練習資料夾(data)中的子資料夾「莊子」進行練習。第一層表示的是,輸入的正則表示式。
請打開Notepad++
請在功能列點選「檢視(V)」,然後點選「文件夾工作區(W)」來打開文件夾工作區(在視窗左邊)。
將滑鼠移到文件夾工作區的空白處,按下滑鼠右鍵;待小視窗跳出來後,點選視窗中的「Add」,然後利用資料夾選擇視窗,選擇下載並解壓縮的data資料夾。然後按一下data資料夾前的「+」號,來展開子資料夾。
子資料夾中的「莊子」,就是我們要用來練習的材料。
請將滑鼠游標移到「莊子」子資料夾,並按一下滑鼠右鍵;待小視窗跳出時,點選第二項「Find in Files」
待「File in Files」檢索視窗在螢幕中間出現時,點選此檢索視窗左下角的「規則運算式」,然後利用「尋找內容」後面的欄位,來輸入我們下面練習的正則表達式(Regular Expression),然後按下「全部尋找」來看下面正則表達式的結果。
逍
如果輸入一個字詞,就和我們平常使用的檢索沒有什麼不同。
檢索「逍」,可以在 5 個檔案裏,找到 6 次(6 hits in 5 files)
逍遙
檢索「逍遙」,也可以在 5 個檔案裏,找到 6 次。
所以我們知道,在《莊子》裏,「逍」只會和「遙」一起出現。
[逍遙]
[ ]方括號,表示找的是方括號裏任何一個字元:所以在我們的例子裏,會找出所有的「逍」字和「遙」字。
請注意RegEx中用的符號都是半型。
檢索「[逍遙]」,也可以在 7 個檔案裏,找到 14 次。
配合上面的結果,我們可以推測出,在其它 2 個檔案裏,「遙」各出現 1 次。
[逍遙遊]大
檢索「[逍遙遊]」,也可以在 51 個檔案裏,找到 95 次。
配合上面的結果,我們可以推測出,「遊」總共出現 81 次。
逍遙遊
檢索「逍遙遊」,在 0 個檔案裏,發現 0 次。
「逍遙遊」雖然是《莊子》首篇的篇名,但並沒有成為三字詞出現在內文裏。
[逍遙]之
如果我們把一個一般檢索的「之」字和選擇任何一個字元的「[逍遙]」,會找出所有的「逍之」和「遙之」。
檢索「[逍遙]之」,可以在 1 個檔案裏,找到 1 次。
蜩|學鳩
如果要找的是一個或一個字元以上的字詞,我們使用的是半型的「|」。
檢索「蜩|學鳩」,可以找到「蜩」或「學鳩」,亦即找出所有的「蜩」與「學鳩」;在 5 個檔案裏,可以找到 9 次。
(蜩|學鳩)笑
如果要把「蜩|學鳩」和一個一般的檢索字詞連在一起,比如說「笑」合成一個正則表示式,找出所有的「蜩笑」或「學鳩笑」,我們必須利用半型括號先把「蜩|學鳩」括起來,做為複合型的一個部分,否則我們會打成「蜩|學鳩笑」,找出來的會是「蜩」與「學鳩笑」而不是「蜩笑」與「學鳩笑」。
( ) 可以幫我們組成群組,也可以讓複合式的正則表示式更容易理解。
也因為 ( ) 可以把不同的部分群組起來,所以可以讓正則表示式可以累聚起來成為更複雜的樣式,功能也就更強大。
例如:「[逍遙](之(蜩|學鳩)笑)」會先找出「逍」或「遙」字,再找出括號中的「之蜩笑」或「之學鳩笑」;合併起來的結果,就是會找出:1)「逍之蜩笑」;2)「遙之蜩笑」;3)「逍之學鳩笑」;4)「遙之學鳩笑」。
另外,部分的正則表示式群組起來以後,就可以用代碼來指稱它們。同樣的這也大大增加了正則表示式的功能,也讓正則表示式的「取代」的功能可以較抽象化的進行,而不是只能以一般字詞來做為取代的內容。(下面還會詳細說明。)
( ) 依照順序,代碼分別是\1、\2、\3、\4…
例如在「[逍遙](之(蜩|學鳩)笑)」的例子裏。「\1」是代表最外面括號裏的東西,也就是「之(蜩|學鳩)笑」而「\2」代表的就是裏面的括號內的東西,也就是「蜩|學鳩」。
所以如果我們「[逍遙](之(蜩|學鳩)笑)」改寫成「[逍遙](之(蜩|學鳩)笑)\2」,就會找出:1)「逍之蜩笑蜩」;2)「遙之蜩笑蜩」;3)「逍之學鳩笑蜩」;4)「遙之學鳩笑蜩」;5)「逍之蜩笑學鳩」;6)「遙之蜩笑學鳩」;7)「逍之學鳩笑學鳩」;8)「遙之學鳩笑學鳩」。
================
以下尚未編輯:
現在讓我們打開一個檔案
字元 描述
\ 共計12個)、或一個向後參照(backreferences)、或一個八進位轉義符。例如,「n」符合字元「n」。「\n」符合一個換行符。序列「\\」符合「\」而「\(」則符合「(」。
^ 符合輸入字串的開始位置。如果設定了RegExp物件的Multiline屬性,^也符合「\n」或「\r」之後的位置。
$ 符合輸入字串的結束位置。如果設定了RegExp物件的Multiline屬性,$也符合「\n」或「\r」之前的位置。
* 符合前面的子運算式零次或多次。例如,zo*能符合「z」、「zo」以及「zoo」。*等價於{0,}。
+ 符合前面的子運算式一次或多次。例如,「zo+」能符合「zo」以及「zoo」,但不能符合「z」。+等價於{1,}。
? 符合前面的子運算式零次或一次。例如,「do(es)?」可以符合「do」或「does」中的「do」。?等價於{0,1}。
{n} n是一個非負整數。符合確定的n次。例如,「o{2}」不能符合「Bob」中的「o」,但是能符合「food」中的兩個o。
{n,} n是一個非負整數。至少符合n次。例如,「o{2,}」不能符合「Bob」中的「o」,但能符合「foooood」中的所有o。「o{1,}」等價於「o+」。「o{0,}」則等價於「o*」。
{n,m} m和n均為非負整數,其中n<=m。最少符合n次且最多符合m次。例如,「o{1,3}」將符合「fooooood」中的前三個o。「o{0,1}」等價於「o?」。請注意在逗號和兩個數之間不能有空格。
? 非貪心量化(Non-greedy quantifiers):當該字元緊跟在任何一個其他重複修飾詞(*,+,?,{n},{n,},{n,m})後面時,符合模式是非貪婪的。非貪婪模式儘可能少的符合所搜尋的字串,而預設的貪婪模式則儘可能多的符合所搜尋的字串。例如,對於字串「oooo」,「o+?」將符合單個「o」,而「o+」將符合所有「o」。
. 符合除「\n」之外的任何單個字元。要符合包括「\n」在內的任何字元,請使用像「(.|\n)」的模式。
(pattern) 符合pattern並取得這一符合的子字串。該子字串用於向後參照。所取得的符合可以從產生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中則使用$0…$9屬性。要符合圓括號字元,請使用「\(」或「\)」。
(?:pattern) 符合pattern但不取得符合的子字串(shy groups),也就是說這是一個非取得符合,不儲存符合的子字串用於向後參照。這在使用或字元「(|)」來組合一個模式的各個部分是很有用。例如「industr(?:y|ies)」就是一個比「industry|industries」更簡略的運算式。
(?=pattern) 正向肯定預查(look ahead positive assert),在任何符合pattern的字串開始處符合尋找字串。這是一個非取得符合,也就是說,該符合不需要取得供以後使用。例如,「Windows(?=95|98|NT|2000)」能符合「Windows2000」中的「Windows」,但不能符合「Windows3.1」中的「Windows」。預查不消耗字元,也就是說,在一個符合發生後,在最後一次符合之後立即開始下一次符合的搜尋,而不是從包含預查的字元之後開始。
(?!pattern) 正向否定預查(negative assert),在任何不符合pattern的字串開始處符合尋找字串。這是一個非取得符合,也就是說,該符合不需要取得供以後使用。例如「Windows(?!95|98|NT|2000)」能符合「Windows3.1」中的「Windows」,但不能符合「Windows2000」中的「Windows」。預查不消耗字元,也就是說,在一個符合發生後,在最後一次符合之後立即開始下一次符合的搜尋,而不是從包含預查的字元之後開始
(?<=pattern) 反向(look behind)肯定預查,與正向肯定預查類似,只是方向相反。例如,「(?<=95|98|NT|2000)Windows」能符合「2000Windows」中的「Windows」,但不能符合「3.1Windows」中的「Windows」。
(?<!pattern) 反向否定預查,與正向否定預查類似,只是方向相反。例如「(?<!95|98|NT|2000)Windows」能符合「3.1Windows」中的「Windows」,但不能符合「2000Windows」中的「Windows」。
x|y 符合x或y。例如,「z|food」能符合「z」或「food」。「(?:z|f)ood」則符合「zood」或「food」。
[xyz] 字元集合(character class)。符合所包含的任意一個字元。例如,「[abc]」可以符合「plain」中的「a」。特殊字元僅有反斜線\保持特殊含義,用於跳脫字元。其它特殊字元如星號、加號、各種括弧等均作為普通字元。脫字元^如果出現在首位則表示負值字元集合;如果出現在字串中間就僅作為普通字元。連字元 - 如果出現在字串中間表示字元範圍描述;如果如果出現在首位(或末尾)則僅作為普通字元。右方括弧應轉義出現,也可以作為首位字元出現。
[^xyz] 排除型字元集合(negated character classes)。符合未列出的任意字元。例如,「[^abc]」可以符合「plain」中的「plin」。
[a-z] 字元範圍。符合指定範圍內的任意字元。例如,「[a-z]」可以符合「a」到「z」範圍內的任意小寫字母字元。
[^a-z] 排除型的字元範圍。符合任何不在指定範圍內的任意字元。例如,「[^a-z]」可以符合任何不在「a」到「z」範圍內的任意字元。
[:name:] 增加命名字元類(named character class)[註 1]中的字元到運算式。只能用於方括弧運算式。
[=elt=] 增加當前locale下排序(collate)等價於字元「elt」的元素。例如,[=a=]可能會增加ä、á、à、ă、ắ、ằ、ẵ、ẳ、â、ấ、ầ、ẫ、ẩ、ǎ、å、ǻ、ä、ǟ、ã、ȧ、ǡ、ą、ā、ả、ȁ、ȃ、ạ、ặ、ậ、ḁ、ⱥ、ᶏ、ɐ、ɑ 。只能用於方括弧運算式。
[.elt.] 增加排序元素(collation element)elt到運算式中。這是因為某些排序元素由多個字元組成。例如,29個字母表的西班牙語, "CH"作為單個字母排在字母C之後,因此會產生如此排序「cinco, credo, chispa」。只能用於方括弧運算式。
\b 符合一個單詞邊界,也就是指單詞和空格間的位置。例如,「er\b」可以符合「never」中的「er」,但不能符合「verb」中的「er」。
\B 符合非單詞邊界。「er\B」能符合「verb」中的「er」,但不能符合「never」中的「er」。
\cx 符合由x指明的控制字元。例如,\cM符合一個Control-M或Enter符。x的值必須為A-Z或a-z之一。否則,將c視為一個原義的「c」字元。
\d 符合一個數字字元。等價於[0-9]。注意Unicode正規表示式會符合全形數字字元。
\D 符合一個非數字字元。等價於[^0-9]。
\f 符合一個換頁符。等價於\x0c和\cL。
\n 符合一個換行符。等價於\x0a和\cJ。
\r 符合一個Enter符。等價於\x0d和\cM。
\s 符合任何空白字元,包括空格、制表符、換頁符等等。等價於[ \f\n\r\t\v]。注意Unicode正規表示式會符合全形空格符。
\S 符合任何非空白字元。等價於[^ \f\n\r\t\v]。
\t 符合一個制表符。等價於\x09和\cI。
\v 符合一個垂直制表符。等價於\x0b和\cK。
\w 符合包括底線的任何單詞字元。等價於「[A-Za-z0-9_]」。注意Unicode正規表示式會符合中文字元。
\W 符合任何非單詞字元。等價於「[^A-Za-z0-9_]」。
\ck 符合控制跳脫字元。k代表一個字元。等價於「Ctrl-k」。用於ECMA語法。
\xnn 十六進位跳脫字元序列。符合兩個十六進位數字nn表示的字元。例如,「\x41」符合「A」。「\x041」則等價於「\x04&1」。正則運算式中可以使用ASCII編碼。.
\num 向後參照(back-reference)一個子字串(substring),該子字串與正規表示式的第num個用括弧圍起來的捕捉群(capture group)子運算式(subexpression)符合。其中num是從1開始的十進位正整數,其上限可能是9[註 2]、31、[註 3]99甚至無限。[註 4]例如:「(.)\1」符合兩個連續的相同字元。
\n 標識一個八進位轉義值或一個向後參照。如果\n之前至少n個取得的子運算式,則n為向後參照。否則,如果n為八進位數字(0-7),則n為一個八進位轉義值。
\nm 3位八進位數字,標識一個八進位轉義值或一個向後參照。如果\nm之前至少有nm個獲得子運算式,則nm為向後參照。如果\nm之前至少有n個取得,則n為一個後跟文字m的向後參照。如果前面的條件都不滿足,若n和m均為八進位數字(0-7),則\nm將符合八進位轉義值nm。
\nml 如果n為八進位數字(0-3),且m和l均為八進位數字(0-7),則符合八進位轉義值nml。
\un Unicode跳脫字元序列。其中n是一個用四個十六進位數字表示的Unicode字元。例如,\u00A9符合版權符號(©)。
Report abuse
Report abuse