亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python字符串和正則表達(dá)式中的反斜杠('\')問題詳解

系統(tǒng) 1529 0

在Python普通字符串中

在Python中,我們用'\'來轉(zhuǎn)義某些普通字符,使其成為特殊字符,比如

            
In [1]: print('abc\ndef') # '\n'具有換行的作用
abc
defg

In [2]: print('abc\tdef') # '\t'具有制位符的作用           
abc  defg
          

我們還可以用'\'來轉(zhuǎn)義特殊字符,使其成為普通字符,比如

            
In [3]: print('abc\\tdef') # 使'\'成為一個(gè)普通的字符,沒有轉(zhuǎn)義作用
abc\tdef

In [4]: print('abc\'tdef') # 使'''成為一個(gè)普通的字符,不再需要和另一半單引號(hào)'''配對(duì)              
abc'tde
          

所以,在python普通字符串中,我們不能以奇數(shù)個(gè)'\'結(jié)尾,這樣會(huì)導(dǎo)致結(jié)束的的引號(hào)轉(zhuǎn)義成一個(gè)純字符,從而使得這段字符串沒有引號(hào)來結(jié)束。

在Python原生字符串中

我們?cè)谧址凹右粋€(gè)'r'來表示原生字符串,比如r'abc'。原生字符串中的特殊字符的特殊含義將會(huì)被剝奪掉,如下

            
In [5]: print(r'abc\ndefg') # '\n'沒有換行的作用,僅僅是一個(gè)普通的字符串             
abc\ndefg

In [6]: print(r'abc\tdefg') # '\t'沒有制位符的作用,僅僅是一個(gè)普通的字符串          
abc\tdef
          

這里有一個(gè)奇怪的問題,在原生字符串中,雖然'\'成為了一個(gè)普通的字符串,但我們同樣不能以奇數(shù)個(gè)'\'字符串結(jié)尾,這是因?yàn)镻ython正則表達(dá)式的原因,在正則表達(dá)式中我們將會(huì)解釋這個(gè)問題。

在Python(regular express)正則表達(dá)式中

Python正則表達(dá)式中會(huì)有一些不同,正則表達(dá)式中指定了一些元字符(metacharacter),如下

            
. ^ $ * + ? { } [ ] \ | ( )
          

它們都具有特殊的含義,'\'也屬于元字符。'\'既屬于Python中的特殊字符,也屬于正則中的元字符,所以使用時(shí)得非常小心。那么在正則中,'\'的作用是什么呢?我們看一個(gè)例子

            
In [7]: re.search('.', 'sd.f')               
Out[7]: <_sre.SRE_Match object; span=(0, 1), match='s'>

In [8]: re.search('\.', 'sd.f')              
Out[8]: <_sre.SRE_Match object; span=(2, 3), match='.'>In [9]: re.search('\n', 'sdfd\nfds')            Out[9]: <_sre.SRE_Match object; span=(4, 5), match='\n'>

"""
'.'作為一個(gè)元字符,它的特殊含義是匹配任意一個(gè)字符,而當(dāng)我們?cè)谄淝懊婕?\'后,它的特殊含義消失了,匹配到的是'.';而且'\'依然可以把Python中某些字符轉(zhuǎn)義成特殊字符。
"""
          

所以,'\'的作用是剝奪元字符的特殊含義,使其成為一個(gè)Python字符,所以它還是會(huì)具有在Python普通字符串中的轉(zhuǎn)義作用,比如'\n'依然表示換行。所以,'\'既是正則中的一個(gè)元字符,又是Python中的一個(gè)特殊字符。那么我們?cè)撊绾纹ヅ涞郊冏址?\'(無(wú)任何特殊意義)?

在正則中,'\'的作用是把元字符轉(zhuǎn)義成Python字符串文字(a Python string literal),所以正則中的'\\'其實(shí)是其實(shí)是Python字符中的'\',它仍然還具有轉(zhuǎn)義作用,所以在正則中我們還得對(duì)每個(gè)'\'再進(jìn)行轉(zhuǎn)義一次,即'\\\\',這樣就可以匹配到純字符'\'了。看下面例子

            
In [10]: re.search('\\\\', 'fsd\nfds') # 目標(biāo)字符串中沒有純字符'\',所以匹配為空

In [11]: re.search('\\\\', 'fsd\\nfds')                     
Out[11]: <_sre.SRE_Match object; span=(3, 4), match='\\'> # Python字符串中,'\\'就是純字符'\'
          

在re中反復(fù)的使用'\',這可能會(huì)生成大量的連續(xù)的反斜杠,從而導(dǎo)致某些字符串難以理解。解決的辦法是用Python原生字符串來書寫正則表達(dá)式,如下

            
In [12]: re.search(r'\\', 'fsd\\nfds') # 兩個(gè)'\\'就可以匹配到純字符'\'
Out[12]: <_sre.SRE_Match object; span=(3, 4), match='\\'>
          

另外,當(dāng)我們用原生字符串來書寫正則表達(dá)式時(shí),Python字符中的特殊字符依然有效,比如

            
In [13]: re.search(r'\n', 'fsd\nfds')                      
Out[13]: <_sre.SRE_Match object; span=(3, 4), match='\n'>
"""
在Python字符中,r'\n'僅僅表示純字符串'\n',沒有換行的作用;在正則中,r'\n'依然還有換行的作用。所以此時(shí)我們不能用奇數(shù)個(gè)'\'來結(jié)尾某個(gè)正則表達(dá)式,這樣導(dǎo)致結(jié)束的引號(hào)被轉(zhuǎn)義成一個(gè)純字符,無(wú)結(jié)束符號(hào)。所以,在Python原生字符串中,我們也同樣規(guī)定不能用奇數(shù)個(gè)'\'來結(jié)尾。
"""
          

以上就是本次介紹的全部知識(shí)點(diǎn)內(nèi)容,感謝大家對(duì)腳本之家的支持。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 欧美激情观看一区二区久久 | 日韩专区亚洲精品欧美专区 | 四虎最新紧急更新地址 | 波多野结衣久久精品 | 国产免费一级高清淫曰本片 | 久草男人天堂 | 日韩有码第一页 | 国产v欧美v日韩在线观看 | 久久都是精品 | 久久99中文字幕久久 | 四虎永久在线观看免费网站网址 | 日本在线观看不卡免费视频 | 午夜欧美精品久久久久久久久 | 久草手机视频在线 | 成年女人毛片 | 五月花在线观看播放视频 | 92自拍视频 | 欧美极品妇xxxxxbbbbb | 一级片在线视频 | 国产精品久久久久久久免费大片 | 特级毛片免费观看视频 | 久久久小视频 | 国产一区在线观看视频 | 亚洲视频网 | 香香影院在线观看 | 4399一级成人毛片 | 国产美女亚洲精品久久久毛片 | 青娱乐伊人 | 久久中文字幕在线 | 国产成人精品一区二区三区 | 国产精品乱码高清在线观看 | 久久综合九色综合国产 | 四虎影院在线播放视频 | 亚洲欧美综合国产精品一区 | 亚洲国产日本 | 在线视频a | 日韩精品欧美高清区 | 免费在线观看黄色的网站 | 亚洲伦理中文字幕一区 | 中文字幕美日韩在线高清 | 亚洲精品欧美精品日韩精品 |