




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Sigil正則表達(dá)式入門(mén)正則表達(dá)式,是一種用特殊符號(hào)表示文字的方法,主要用在查找和替換方面。下面的例子可以讓你知道正則表達(dá)式是干什么用的。在一個(gè)文本中,有這樣的一些內(nèi)容:序章第一章 ABCDEF第二章 GHIJKL第三章 終章這種內(nèi)容我們都很熟悉,你有沒(méi)有想過(guò),用什么辦法可以把這些內(nèi)容一次過(guò)查找出來(lái)呢?為了簡(jiǎn)化,我們先來(lái)看這個(gè)部分。第一章第二章第三章可以看到,這些內(nèi)容有著極高的相似性,由“第”,“章”開(kāi)頭和結(jié)尾,中間有著一些數(shù)字。如果我們能用一個(gè)什么符號(hào)來(lái)代表中間的所有字,比如一個(gè)圓點(diǎn)“.”,不就可以用這樣的方式來(lái)查找出所有這樣的內(nèi)容了嗎。第.章很早之前,就有人發(fā)明了一套完整的方案,讓我們可以
2、用各種不同的符號(hào)來(lái)達(dá)到這種目的,那就是我們將要了解的正則表達(dá)式。正則表達(dá)式作為一種描述字符的方案,在大量軟件、編程語(yǔ)言中都有所運(yùn)用,而在這些不同的平臺(tái)上,正則表達(dá)式的使用方式又往往會(huì)有或多或少的差異,在某個(gè)平臺(tái)上管用的表達(dá)式,換個(gè)地方可能就要改改才能正確運(yùn)行。那么在這篇文章里,我們主要是講Sigil中的正則表達(dá)式,至于推廣應(yīng)用,就要靠大家去查找資料了。1. 元字符我們前面提到,正則表達(dá)式一個(gè)重要作用就是用特別的符號(hào)來(lái)代表一類(lèi)字符,而這些符號(hào)就叫做“元字符”。這些元字符在大多數(shù)環(huán)境下都是通用的。注意,元字符中所有符號(hào)都是半角符號(hào),也就是通常說(shuō)的英文符號(hào)。以下是一些常見(jiàn)的元字符,實(shí)際上還有更多。這
3、些元字符都經(jīng)過(guò)測(cè)試,在Sigil下有效。符號(hào)意義說(shuō)明.任意一個(gè)字符最簡(jiǎn)單的元字符,匹配任意字符,但不包括換行符“n”。轉(zhuǎn)義把元字符改變?yōu)槠胀ㄗ址?,或者把某些普通字符轉(zhuǎn)變?yōu)樵址1热?,?”就是代表普通的點(diǎn)號(hào),不代表其他字符。s空白字符半角空格、制表符等空白字符。在Sigil中還能匹配到換行符“n”和空白行,使用要注意。注意,不能匹配到全角空格。t制表符匹配制表符。n換行符表示文章的換行,這是一個(gè)不可見(jiàn)符號(hào),在例子中,這個(gè)符號(hào)在“_”的位置。aaanbbb你能夠通過(guò)“n”找到換行符,但不能夠插入換行符。要在替換結(jié)果中換行,需要用“r”。r回車(chē)代表一個(gè)回車(chē)符。這個(gè)符號(hào)不會(huì)在文本中出現(xiàn),因此不能查
4、找到。但是如果你需要在查找結(jié)果中插入一個(gè)換行,那么就要用“r”。注意,插入后在文本中出現(xiàn)的仍然會(huì)是“n”而不是“r”。d任意一個(gè)阿拉伯?dāng)?shù)字也就是可以代表09中的任意一個(gè)。D任意一個(gè)非阿拉伯?dāng)?shù)字09以外的字符,同樣的,不包括換行符“n”行首即一行的開(kāi)頭。Sigil中不能單獨(dú)使用,要配合其他字符。比如,“a”表示在行首的“a”,能匹配到第一行和第三行的字母“a”。第二行因?yàn)樾惺资强崭瘢虼似ヅ洳坏?。abcabcabc$行尾表示任意一行的結(jié)尾,不包括換行符。在Sigil中不能單獨(dú)使用。比如,“c$”表示位于行尾的“c”,能夠匹配到第一行和第二行的字母“c”。abcabcabcd+一或更多表示一個(gè)或更
5、多。必須配用其他字符使用。添加在一個(gè)字符后面,表示一個(gè)或更多個(gè)該字符。相當(dāng)于“1,”比如,“a+”表示一個(gè)以上的“a”,以下例子都能匹配到。aaaaaa?盡可能少表示盡可能少。必須配合其他字符使用。比如,“accccbb”中“a.*b”匹配到“accccbb”,而“a.*?b”就能只匹配到“accccb”。注意:在某些平臺(tái)的正則表達(dá)式中,這一功能很可能由“-”減號(hào)提供。|或一個(gè)邏輯選擇符。“aa|bb”既可以匹配到“aa”也可以匹配到“bb”。可以用到多個(gè)選項(xiàng)中,比如“aa|bb|cc”?!?|2|3”相當(dāng)于“123”。*盡可能多即無(wú)或更多。相當(dāng)于“0,”n,m個(gè)數(shù)范圍表示匹配項(xiàng)的個(gè)數(shù)范圍。比
6、如,“a3”表示“aaa”,“a2,4”表示“aa”或“aaa”或“aaaa”,“a1,”表示一個(gè)以上的“a”。注意,“a,2”應(yīng)該表示兩個(gè)以下的“a”,但是這種寫(xiě)法在Sigil中無(wú)效,要寫(xiě)成“a0,2”。包含“”本身匹配一個(gè)字符。比如,“abc”匹配“a”、“b”或“c”。通常不分順序,“”和“”一樣。“”中用“-”表示范圍,“a-z”表能匹配到“a”到“z”全部26個(gè)字母之一。比如,“”和“d”是一樣的,但是“d”速度更快。如果要在“”中匹配“-”本身,把“-”寫(xiě)在最前面,或者把它轉(zhuǎn)義“-”。比如“-0-9”,就能匹配所有阿拉伯?dāng)?shù)字和“-”。不包含“”的逆操作。比如“abc”,能匹配到第二
7、行,第三行。abcadcafc注意,因?yàn)椤啊敝蟹?hào)是無(wú)序的,因此如果要排除字符串,要用其他方法。()捕獲組“(abc)”表示把“abc”分為一組。分組后可以配合其他元字符使用。一個(gè)組稱(chēng)為一個(gè)捕獲組。比如,“(abc)+”就是一個(gè)或以上“abc”組合的意思。捕獲組中的內(nèi)容會(huì)被記錄并編號(hào),可以通過(guò)“0”“1”這種形式來(lái)引用。(?:)分組/非捕獲組作用上與“()”類(lèi)似,能把內(nèi)容分為一組,但“(?:)”僅有分組功能,不記錄匹配內(nèi)容。也就是說(shuō),無(wú)法通過(guò)“0”“1”等方式引用。此元字符雖然消耗的資源更少,速度更快,在簡(jiǎn)單應(yīng)用中可能體驗(yàn)不到與“()”的區(qū)別。0,1,2.反向引用配合分組使用,引用一個(gè)分組。比
8、如,在查找時(shí)有分組“(abc)”,那么“1”就代表“abc”。有分組“a(bc)(de)f”,那么“0”代表“abcdef”,“1”代表“bc”,“2”代表“de”。如此類(lèi)推。嵌套也是一樣的,比如“(abc(def)”,“1”代表“abcdef”,“2”代表“def”。同樣地,也能在查找時(shí)應(yīng)用。比如有字符串“abc111abc”,那么表達(dá)式“(abc).*1”就能匹配到所有內(nèi)容。注:在其他平臺(tái)中,可能使用的是$0,$1等表示方法。(?s)多行匹配放在表達(dá)式的最前端,使得“.”可以匹配到“n”,從而實(shí)現(xiàn)跨行匹配。比如以下例子:使用正則表達(dá)式“.*”一次只能匹配到第一行或者第三行。而使用“(?s)
9、.*”則能一次性匹配到第一行到第三行所有內(nèi)容。注:這是Sigil特有元字符,其他平臺(tái)有另外的方法實(shí)現(xiàn)該功能。注2:此前綴和勾選“DotAll”效果一致。(?U)最少匹配放在表達(dá)式的最前端,使得整個(gè)正則表達(dá)式實(shí)現(xiàn)最少匹配。比如以下例子:AAABBBCCC正則表達(dá)式“.*”會(huì)匹配到整個(gè)句子。而“(?U).*”只會(huì)匹配到“AAABBB”。注:這是Sigil特有元字符,其他平臺(tái)有另外的方法實(shí)現(xiàn)該功能。注2:此前綴和勾選“Minimal Match”效果一致。2. 常用正則表達(dá)式在這一部分,我們回來(lái)看一些很常用的正則表達(dá)式,這些表達(dá)式往往是更復(fù)雜表達(dá)式的組成部分。2.1 所有字符.*匹配所有內(nèi)容。“.”
10、代表一個(gè)字符,“*”代表任意多個(gè),因此“.*”代表“所有字符”。比如.*表示標(biāo)簽內(nèi)的所有內(nèi)容,可以依次匹配到下列各項(xiàng)AAACCCC!AAAAACCCC啊啊啊啊但不能跨行,這樣是匹配不到的。AAAAAA如果要跨行,需要使用“(?s)”。2.2 空白行 t *$n匹配空白行的典型寫(xiě)法。可以匹配無(wú)內(nèi)容的行,只有空格的行,只有制表符的行或者空格和制表符混合排列的行。中包括的分別是空格“ ”,制表符“t”和全角空格“”。也可以根據(jù)需要添加更多的字符。2.3 行尾空白字符t+$匹配出現(xiàn)在行尾的空白字符,比如空格。思路和2.2一致,使用“$”把搜查范圍限定在結(jié)尾,使用了符號(hào)“+”確保最少有一個(gè)空白字符,否則
11、會(huì)查找失敗。2.4 壓縮重復(fù)符號(hào)查找。+替換。很容易理解,把一個(gè)以上的“。”,換成一個(gè)“?!?,從而達(dá)到壓縮重復(fù)符號(hào)的目的??梢造`活改變,壓縮各種重復(fù)的字符。配合2.2的查找空白行,也能實(shí)現(xiàn)壓縮空白行。3. 應(yīng)用實(shí)例在這一部分,我們會(huì)看一些Sigil使用過(guò)程中實(shí)際會(huì)用到的例子,方便各位了解正則表達(dá)式的使用。3.1 添加標(biāo)簽?zāi)愦蛩銥樗械膱D片添加一個(gè),并且class為images原語(yǔ)句目標(biāo)語(yǔ)句使用元字符. ,* ,0查找替換0解說(shuō):查找以“”結(jié)尾的所有句子,這個(gè)表達(dá)式默認(rèn)分組為“0”,因此可以用“0”來(lái)引用。如果你的文本中圖片語(yǔ)句必定是獨(dú)立一行的,可以直接使用“”后面是否緊跟換行符“n”來(lái)判斷圖片
12、是否獨(dú)立一行,從而實(shí)現(xiàn)不同位置圖片的匹配。擴(kuò)展:同樣的,你可以用這個(gè)方法為各種內(nèi)容很方便的添加標(biāo)簽,如果你常常用到這樣的替換,不要忘記善用Sigil的搜索模板功能。3.2 拼接斷行在一些文本中,會(huì)存在斷行,我們要把這些斷行重新拼接起來(lái)。原文本床前明月光,疑是地上霜。舉頭望明月,低頭思故鄉(xiāng)。目標(biāo)文本床前明月光,疑是地上霜。舉頭望明月,低頭思故鄉(xiāng)。使用元字符,n查找(,。)$n替換1解說(shuō)其實(shí)所謂的斷行,就是在不該換行的地方進(jìn)行了換行,那么只要分析出不該換行的特征就可以了。在這個(gè)例子中,換行只應(yīng)該出現(xiàn)在“,”和“?!焙竺妫虼宋覀儾檎仪懊鏇](méi)有“,”或者“?!钡膿Q行,并且將其刪除就可以了。因?yàn)槭褂玫恼?/p>
13、則表達(dá)式會(huì)匹配到“n”前面的一個(gè)字符,為了不把這個(gè)字符也刪除,所以要用“()”把這個(gè)字符保護(hù)起來(lái)。擴(kuò)展實(shí)際上我們還可以使用“零寬斷言”來(lái)達(dá)到這個(gè)效果,寫(xiě)法是“(?!,。$)n”,直接替換為空,零寬斷言本身就保護(hù)了字符。但是作為一個(gè)入門(mén)應(yīng)用,我還是先介紹使用“”的方法,關(guān)于零寬斷言,有興趣的朋友可以到這個(gè)網(wǎng)址了解:/rcom10002/acle/details/3.3 識(shí)別章節(jié)標(biāo)題這是很常見(jiàn)的一個(gè)需求,我們往往要為章節(jié)標(biāo)題添加,之類(lèi)的標(biāo)簽。通過(guò)3.1我們已經(jīng)了解到如何添加標(biāo)簽,因此這里著重講解如何識(shí)別標(biāo)題。原文本序章第一章 XXXX第二章 CCCC第三章 A
14、AAA終章后記目標(biāo)文本序章第一章 XXXX第二章 CCCC第三章 AAAA終章后記使用元字符. ,* ,(),1,|,m,n查找(序章|第.1,3章|終章|后記).*)替換1解說(shuō)表達(dá)式開(kāi)始的“”查找內(nèi)容必須是每一行的開(kāi)頭,這樣才不會(huì)匹配到正文中的“第N章”之類(lèi)的內(nèi)容。當(dāng)然,還是無(wú)法完全排除匹配到正文的可能性,因此要注意替換次數(shù),如果次數(shù)和章節(jié)數(shù)目不符,就要留意了。通過(guò)“|”的使用,我們可以在一個(gè)表達(dá)式中就匹配到所有的內(nèi)容,要善用“|”。“第.1,3章”是一個(gè)保險(xiǎn),最多匹配到“第九十九章”這樣的字符串,在實(shí)際使用中,往往只需要寫(xiě)“第.章”。如果是“第1章”這樣的,就可以用“第d章”來(lái)更精準(zhǔn)的匹配。3.5 自動(dòng)插入內(nèi)容原文本XXXX目標(biāo)文
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆河北省阜平一中化學(xué)高二下期末質(zhì)量檢測(cè)模擬試題含解析
- 2025屆云南省保山市昌寧一中化學(xué)高一下期末經(jīng)典模擬試題含解析
- 母雞孵化小雞管理辦法
- 公務(wù)接待出差管理辦法
- 保健食品備案管理辦法
- 巨細(xì)胞病毒抑制機(jī)制-洞察及研究
- 公安監(jiān)管醫(yī)院管理辦法
- 三查四定知識(shí)詳解與應(yīng)用
- 農(nóng)業(yè)種植結(jié)構(gòu)調(diào)整與人力資源配置
- 沈陽(yáng)牌匾設(shè)置管理辦法
- 2023山西高考志愿填報(bào)指南(詳細(xì))
- GB/T 19889.5-2006聲學(xué)建筑和建筑構(gòu)件隔聲測(cè)量第5部分:外墻構(gòu)件和外墻空氣聲隔聲的現(xiàn)場(chǎng)測(cè)量
- GB/T 18391.1-2009信息技術(shù)元數(shù)據(jù)注冊(cè)系統(tǒng)(MDR)第1部分:框架
- GA 1283-2015住宅物業(yè)消防安全管理
- midas分析設(shè)計(jì)原理
- 質(zhì)量管理手冊(cè)(隧道)(中交路橋建設(shè)有限公司)
- 黃大年式教學(xué)團(tuán)隊(duì)申報(bào)材料
- 出香港貨物發(fā)票樣板樣本空白
- 醫(yī)院免疫室標(biāo)準(zhǔn)化操作程序免疫室內(nèi)質(zhì)量控制操作指南(ELISA)人民醫(yī)院檢驗(yàn)科免疫SOP人民醫(yī)院質(zhì)量管理體系課件
- 柳州市柳東新區(qū)南慶安置區(qū)項(xiàng)目工程基坑支護(hù)方案
- 卵巢腫瘤ppt課件
評(píng)論
0/150
提交評(píng)論