import re
print('\ a:{}個(gè)字符,\\a:{}個(gè)字符'.format(len('\ a'),len('\a')))
#結(jié)果: \ a:3個(gè)字符,\a:1個(gè)字符
match2 = re.findall('\\\\','\ a')
match3 = re.findall('\\\\','\a')
match4 = re.findall('\\a','\a')
print(match2,match3,match4)
print(match2[0],match4[0])
#結(jié)果: ['\\'] [] ['\x07']
#結(jié)果: \
match5 = re.findall(r'\\','\ a')
match6 = re.findall(r'\\','\a')
match7 = re.findall(r'\a','\a')
print(match5,match6,match7)
#結(jié)果: ['\\'] [] ['\x07']
?
創(chuàng)新互聯(lián)成立與2013年,先為涿鹿等服務(wù)建站,涿鹿等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為涿鹿企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
第一段:在字符串中,\a為一個(gè)字符,\空格為兩個(gè)字符。
第二段:在字符串中,無法搜索出\a字符中單獨(dú)的反斜杠\,需要整體字符搜索。當(dāng)需要搜索單獨(dú)的一個(gè)反斜杠\時(shí),需要使用兩個(gè)\來搜索,即使用一個(gè)轉(zhuǎn)義符\來表示反斜杠本身,re中pattern則要寫為'\\\\'或r'\\'。
第三段:r'\'相當(dāng)于'\\',同理r'\\'相當(dāng)于"\\\\"。
參考:https://docs.python.org/3/library/re.html#regular-expression-syntax
\
If you’re not using a raw string to express the pattern, remember that Python also uses the backslash as an escape sequence in string literals; if the escape sequence isn’t recognized by Python’s parser, the backslash and subsequent character are included in the resulting string. However, if Python would recognize the resulting sequence, the backslash should be repeated twice. This is complicated and hard to understand, so it’s highly recommended that you use raw stringsfor all but the simplest expressions.
如果你沒有使用原始字符串來表達(dá)模式,請記住Python也使用反斜杠作為字符串文字中的轉(zhuǎn)義序列; 如果Python的解析器無法識(shí)別轉(zhuǎn)義序列,則反斜杠和后續(xù)字符將包含在結(jié)果字符串中。但是,如果Python識(shí)別出結(jié)果序列,則反斜杠應(yīng)重復(fù)兩次。這很復(fù)雜且難以理解,因此強(qiáng)烈建議您使用原始字符串,除了最簡單的表達(dá)式。