亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

詳解python中正則表達式的反斜線的轉(zhuǎn)義功能

gggggggbong / 3543人閱讀

摘要:最近深入研讀了正則表達式的一本經(jīng)典著作,對于在中使用正則表達式時使用反斜線轉(zhuǎn)義功能時有些心得,特與大家分享。核心思想在中使用正則表達式時要切記反斜線具有兩層轉(zhuǎn)義功能,如果你要匹配一個反斜線本身時要注意它必須被轉(zhuǎn)義兩次。

最近深入研讀了正則表達式的一本經(jīng)典著作,對于在python中使用正則表達式時使用反斜線轉(zhuǎn)義功能時有些心得,特與大家分享。
核心思想:在python中使用正則表達式時要切記反斜線具有兩層轉(zhuǎn)義功能,如果你要匹配一個反斜線本身時要注意它必須被轉(zhuǎn)義兩次。(除非你使用原始字符串,就是字符串前面加r)
我們先來看一個例子:

import re
a = re.match("","")
  File "", line 2
    a = re.match("","")
                            ^
SyntaxError: unexpected character after line continuation character

上面這個例子本身就不合語法要求,那么為什么呢? 首先在
python中,因為正則表達式本身是一個字符串,所以它要遵守字符串的規(guī)則——反斜線表示轉(zhuǎn)義符
而在正則表達式中反斜線又是一個具有轉(zhuǎn)義功能的元字符,所以反斜線具備了雙重轉(zhuǎn)義功能

回到例子中,第一個轉(zhuǎn)義了第二個,此時第二個去除了字符串轉(zhuǎn)義符的身份,但是它還有正則表達式轉(zhuǎn)義元字符的身份

也就是說第二個仍然具備轉(zhuǎn)義功能,那么它轉(zhuǎn)義誰呢?它只能轉(zhuǎn)義第三個,可是第三個它具備兩層身份(字符串的轉(zhuǎn)義符和正則表達式的轉(zhuǎn)義元字符)

所以現(xiàn)在有兩種可能情況發(fā)生:

第一種,第二個無法轉(zhuǎn)義第三個,因為身份不符,一個是正則表達式轉(zhuǎn)義元字符,另一個是字符串轉(zhuǎn)義符

第二種,第二個轉(zhuǎn)義了第三個,但是這種轉(zhuǎn)義也僅僅是去除了一層身份,但是它還有一層身分(轉(zhuǎn)義元字符)結(jié)果就是第三個仍然具有轉(zhuǎn)義功能。

總之不管這時發(fā)生了哪種情況,第三個最終結(jié)果就是仍然具備轉(zhuǎn)義功能,他會轉(zhuǎn)義它后面的單引號,使得整段代碼語法錯誤。

所以正確的寫法是再添加一個反斜線,四個反斜線,兩兩轉(zhuǎn)義之后最終轉(zhuǎn)義成匹配多帶帶一個反斜線的功能

import re
a = re.match("","")
print(a)
#顯示的結(jié)果match="",之所以顯示兩個反斜線是因為語法規(guī)定一個反斜線無法顯示(是轉(zhuǎn)義符)
<_sre.SRE_Match object; span=(0, 1), match="">

當(dāng)然也可以使用原始字符串的方法,在字符串前面加r,這時里面的反斜線就失去字符串轉(zhuǎn)義符的功能了,本文主要討論實質(zhì)原理,不是方法

import re
a = re.match(r"","")
print(a)
<_sre.SRE_Match object; span=(0, 1), match="">

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/42560.html

相關(guān)文章

  • 《Java編程思想》筆記13.字符串

    摘要:的構(gòu)造器經(jīng)過重載可以接受多種輸出目的地,不過最常用的還是和。組號為表示整個表達式,組號表示被第一對括號括起的組,依此類推。有多個重載的構(gòu)造器,可以接受和對象。 點擊進入我的博客 字符串操作是計算機程序設(shè)計中最常見的行為 13.1 不可變String String底層是由char[]實現(xiàn)的,是不可變的??雌饋頃淖僑tring的方法,實際上都是創(chuàng)建了一個新的String對象,任何指向它...

    since1986 評論0 收藏0
  • 關(guān)于Java正則轉(zhuǎn)義和\理解

    摘要:作為的轉(zhuǎn)義字符在字符常量中,反斜杠是一個特殊的字符,被稱為轉(zhuǎn)義字符,它的作用是用來轉(zhuǎn)義后面一個字符。中的第一個表示的轉(zhuǎn)義字符由編譯器解析,第二個是正則表達式由正則表達式引擎解析。 的定義 一個轉(zhuǎn)義字符的目的是開始一個字符序列,使得轉(zhuǎn)義字符開頭的該字符序列具有不同于該字符序列單獨出現(xiàn)時的語義。 轉(zhuǎn)義就是指轉(zhuǎn)換該字符的原本意義,從而變成另外的意義。 作為Java的轉(zhuǎn)義字符 1.在java字...

    JerryZou 評論0 收藏0
  • PHP變量類型

    摘要:獲取變量的類型,使用函數(shù)。要檢驗?zāi)硞€類型,可以使用函數(shù),如是在整形是在浮點型是在字符串如果需要將一個變量強制轉(zhuǎn)換為某類型,可以對其使用強制轉(zhuǎn)換或者函數(shù)。自起,此限制僅對包含變量時有效。 簡介 PHP支持9種原始數(shù)據(jù)類型。 4種標(biāo)量類型: boolean布爾型 integer 整形 float 浮點型(也稱作double) string 字符串 3種復(fù)合類型: array...

    selfimpr 評論0 收藏0
  • 搞定PHP面試 - 正則達式知識點整理

    摘要:是決定正則表達式匹配規(guī)則的主要部分。二分隔符分隔符的選擇當(dāng)使用函數(shù)的時候,正則表達式必須由分隔符閉合包裹。果分隔符經(jīng)常在正則表達式內(nèi)出現(xiàn),最好使用其他分隔符來提高可讀性。需要將一個字符串放入正則表達式中使用時,可以用函數(shù)對其進行轉(zhuǎn)義。 一、簡介 1. 什么是正則表達式 正則表達式(Regular Expression)就是用某種模式去匹配一類字符串的一種公式。正則表達式使用單個字符串來...

    AaronYuan 評論0 收藏0
  • 正則達式之量詞

    摘要:點號正則中,有一個特殊的特殊的元字符,點號,它可以匹配任意字符,除了換行符。表各種量詞的轉(zhuǎn)義量詞轉(zhuǎn)義形式除此之外,元字符點也需要加反斜線來進行轉(zhuǎn)義。 ??我們知道,在正則表達式中,可以使用[0-9]或d來匹配單個數(shù)字字符,但是,如果需要驗證一個更復(fù)雜的字符串呢,比如大陸地區(qū)的郵政編碼。??不過郵政編碼并沒有特別規(guī)定,只有由6個數(shù)字組成的字符串而已, 如246512,根據(jù)[0-9]或d,...

    lansheng228 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<