正則表達式如何匹配正反斜杠

轉載鏈接:http://wiki.ubuntu.org.cn/Python%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%93%8D%E4%BD%9C%E6%8C%87%E5%8D%97#.E5.8F.8D.E6.96.9C.E6.9D.A0.E7.9A.84.E9.BA.BB.E7.83.A6


反斜杠的麻煩

在早期規定中,正則表達式用反斜杠字符 ("\") 來表示特殊格式或允許使用特殊字符而不調用它的特殊用法。這就與 Python 在字符串中的那些起相同作用的相同字符產生了沖突。


讓我們舉例說明,你想寫一個 RE 以匹配字符串 "\section",可能是在一個 LATEX 文件查找。為了要在程序代碼中判斷,首先要寫出想要匹配的字符串。接下來你需要在所有反斜杠和其它元字符前加反斜杠來取消其特殊意義,結果要匹配的字符串就成了"\\section"。 當把這個字符串傳遞給re.compile()時必須還是"\\section"。然而,作為Python的字符串實值(string literals)來表示的話,"\\section"中兩個反斜杠還要再次取消特殊意義,最后結果就變成了"\\\\section"。

字符階段
\section要匹配的字符串
\\section為 re.compile 取消反斜杠的特殊意義
"\\\\section"為"\\section"的字符串實值(string literals)取消反斜杠的特殊意義


簡單地說,為了匹配一個反斜杠,不得不在 RE 字符串中寫 '\\\\',因為正則表達式中必須是 "\\",而每個反斜杠在常規的 Python 字符串實值中必須表示成 "\\"。在 REs 中反斜杠的這個重復特性會導致大量重復的反斜杠,而且所生成的字符串也很難懂

解決的辦法就是為正則表達式使用 Python 的 raw 字符串表示;在字符串前加個 "r" 反斜杠就不會被任何特殊方式處理,所以 r"\n" 就是包含"\" 和 "n" 的兩個字符,而 "\n" 則是一個字符,表示一個換行。正則表達式通常在 Python 代碼中都是用這種 raw 字符串表示。

常規字符串Raw 字符串
"ab*"r"ab*"
"\\\\section"r"\\section"
"\\w+\\s+\\1"r"\w+\s+\1"

執行匹配

一旦你有了已經編譯了的正則表達式的對象,你要用它做什么呢?`RegexObject` 實例有一些方法和屬性。這里只顯示了最重要的幾個,如果要看完整的列表請查閱 Python Library Reference

方法/屬性作用
match()決定 RE 是否在字符串剛開始的位置匹配
search()掃描字符串,找到這個 RE 匹配的位置
findall()找到 RE 匹配的所有子串,并把它們作為一個列表返回
finditer()找到 RE 匹配的所有子串,并把它們作為一個迭代器返回


如果沒有匹配到的話,match() 和 search() 將返回 None。如果成功的話,就會返回一個 `MatchObject` 實例,其中有這次匹配的信息:它是從哪里開始和結束,它所匹配的子串等等。


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/276136.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276136.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276136.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

前端進階必備Node.js,你得了解一下

作為前端開發,工作中肯定離不開 JavaScript ,而 Node.js 是基于 JavaScript 語言和 V8 引擎的 Web 服務器項目,讓你可以直接使用 JavaScript 來搭架服務器。而且在 Node 環境下,通過模塊化的 JavaScript 代碼,加上函數…

Google推出“Google實驗室” Ad Innovations

4月1日消息,據國外媒體報道,Google近日推出了Ad Innovations功能,類似于“Google實驗室”,但專門用于展示最新的廣告技術、方案等,并征求廣告主的反饋。 目前Ad Innovations已有數款新功能,Google將按照反饋…

JS中utf8和GBK的字符編碼轉換

1、PHP中的 json_encode 函數只限編碼UTF-8的數據,當轉換GBK或者GB2312等編碼的數據時,會將漢字轉為NULL。 2、JavaScript 中json 的使用: ① 將對象轉為json字符串:JSON.stringify(obj)② 將json轉為對象:dataObj ev…

tcptracerte參數_TCP/IP詳解學習筆記(4)-ICMP協議,ping和Traceroute【轉】

1.IMCP協議介紹前面講到了,IP協議并不是一個可靠的協議,它不保證數據被送達,那么,自然的,保證數據送達的工作應該由其他的模塊來完成。其中一個重要的模塊就是ICMP(網絡控制報文)協議。當傳送IP數據包發生錯誤&#xf…

[實踐系列]Promises/A+規范

前言 [實踐系列] 主要是讓我們通過實踐去加深對一些原理的理解。 實踐系列-前端路由 實踐系列-Babel原理 有興趣的同學可以關注 實踐系列 。 求star求follow~ 什么是Promise ? Promise是JS異步編程中的重要概念,異步抽象處理對象,是目前比較流行Javas…

Web Components 上手指南

現在的前端開發基本離不開 React、Vue 這兩個框架的支撐,而這兩個框架下面又衍生出了許多的自定義組件庫:Element(Vue)Ant Design(React)這些組件庫的出現,讓我們可以直接使用已經封裝好的組件&…

隱藏網頁文件的后綴(IIS測試通過)!

網上很多網站會看到如這樣的地址: /content?actadd&id1 /column?actedit&id2 原本是 /content.asp?actadd&id1 /column.asp?actedit&id2 這樣的效果就是在iis上做了下手腳,使用了rewrite重寫組件,就可以實現。 rewrite.rar轉載于:ht…

Linux下查看文件內容的ASCII碼以檢查內容的編碼一致

轉載鏈接:http://blog.csdn.net/tiantang46800/article/details/6460567 ascii查詢方式,查看文件以ascii顯示,od命令 隨著計算機飛速的發展,很多人開始學習Linux,怎樣才能學好Linux,一定要學好Linux的命令…

乘基取整法是什么_十進制小數轉二進制小數乘2取整法的直觀理解

乘2取整法介紹舉例:0.35轉換成二進制0.3520.7 取0(d1)0.721.4 取1(d2)0.420.8 取0(d3)0.821.6 取1(d4)0.621.2 取1(d5)0.220.4 取0(d6)直到滿足規定的位數為止所以(0.35)10(0.d1d2d3d4d5d6)2(0.010110)2這個方法不難掌握,就是有點不好理解&#xf…

如何遠程連接Windows和linux服務器

linux的方法在下面 Windows服務器遠程連接 登錄控制臺查看服務器系統是什么系統例如阿里云的ECS服務器 Windows系統可以使用微軟自帶的遠程工具進行連接,可以連接的系統有Windows server 和Windows 7-10 等等系列;Windows系統,例如Windows10系…

URL是什么

URL是什么意思? 懸賞分:0 - 提問時間2006-3-12 08:14我在玩QQ空間的時候,在添加音樂時會有一個添加URL的地方‘~我是想問那是什么意思???提問者: caoyiwang1107 - 魔法學徒 一級 其他…

手把手教你接入前端熱門抓包神器 - whistle

大家好,我是若川,今天推薦騰訊前端團隊的這篇好文。whistle 是一個基于 Node.js 的跨平臺網絡調試工具。最近隨著 Nohost 的開源,有不少同學問了 whistle 相關的問題,本篇文章將結合幾個常見的業務場景介紹如何在本地前端項目開發…

Linux命令之hexdump - ”十六“進制查看器

轉載鏈接:http://codingstandards.iteye.com/blog/805778 用途說明 hexdump命令一般用來查看”二進制“文件的十六進制編碼,但實際上它的用途不止如此,手冊頁上的說法是“ascii, decimal, hexadecimal, octal dump“,這也就是本文…

使用數據增強技術提升模型泛化能力

在《提高模型性能,你可以嘗試這幾招...》一文中,我們給出了幾種提高模型性能的方法,但這篇文章是在訓練數據集不變的前提下提出的優化方案。其實對于深度學習而言,數據量的多寡通常對模型性能的影響更大,所以擴充數據規…

關于不同用戶進入系統報錯的請求

我自己搞了個系統,用超級用戶進入系統正常,用普通用戶進入系統就報錯,Microsoft JET Database Engine (0x80040E07) 標準表達式中數據類型不匹配。 /xs/huiyuan/huiyuan_bf.asp, 第 203 行 代碼如下請各位高手幫忙 <% if request.Cookies("shiwei_username")"…

React 與 Vue 框架的設計思路大 PK

大家好&#xff0c;我是若川。今天分享一篇框架設計思路的好文。關于我 大家好我是花果山的大圣&#xff0c;今天很榮幸&#xff0c;有機會跟大家分享一下很多年輕人感興趣的話題《 Vue 和 React 設計思想 PK》,個人水平有限&#xff0c;如果有理解不到位的請傾盆&#xff0c;大…

php foreach id是否存在數組_請糾正這 5 個 PHP 編碼小陋習

在做過大量的代碼審查后&#xff0c;我經常看到一些重復的錯誤&#xff0c;以下是糾正這些錯誤的方法。在循環之前測試數組是否為空$items [];// ...if (count($items) > 0) {foreach ($items as $item) {// process on $item ...}}foreach以及數組函數 (array_*) 可以處理…

1161轉進制(C語言)

一&#xff1a;題目 二&#xff1a;思路分析 1.首先該題目讓我們使用遞歸求十進制轉其他進制 2.其次&#xff0c;我們要知道十進制轉換為其他進制怎么轉換&#xff0c;以例題所給的數據為例 由此圖可以看出&#xff0c;十進制轉換為其他進制&#xff0c;是輾轉相除法&#xf…

PHP異常處理

轉載鏈接&#xff1a;http://www.blogdaren.com/post-2030.html 版權聲明&#xff1a;除非注明&#xff0c;本文由( manon )原創&#xff0c;轉載請保留文章出處 本文鏈接&#xff1a;PHP register_shutdown_function函數詳解 腳本時常死掉,而且并不總是那么好看. 我們可不想…

應對無協議脫歐 葡萄牙機場將為英籍旅客設快速通道

中新網1月18日電 據臺灣《聯合報》援引英媒報道&#xff0c;英國首相特蕾莎?梅的脫歐協議遭下院否決后&#xff0c;英國無協議脫歐的可能性變大。葡萄牙總理科斯塔17日表示&#xff0c;里斯本當局正對機場開設特殊通道進行規劃&#xff0c;使英國旅客無論英國最后如何脫歐&…